public interface IWriter
{
void Write();
}
public class LogWriter:IWriter
{
public static int typeID;
IWriter Members#region IWriter Members
public void Write()
{
// throw new Exception("The method or operation is not implemented.");
Console.WriteLine(typeID);
}
#endregion
}
{
void Write();
}
public class LogWriter:IWriter
{
public static int typeID;
IWriter Members#region IWriter Members
public void Write()
{
// throw new Exception("The method or operation is not implemented.");
Console.WriteLine(typeID);
}
#endregion
}
Assembly assembly = Assembly.GetExecutingAssembly();
Module[] modules = assembly.GetModules();
if (modules != null)
{
foreach (Module obj in modules)
{
Type[] types = obj.GetTypes();
foreach (Type objType in types)
{
if (objType.Name == "LogWriter")
{
try
{
objType.InvokeMember("typeID", BindingFlags.SetField | BindingFlags.Public | BindingFlags.Static, null, null, new object[] { 1200 });
IWriter writer = (IWriter)Activator.CreateInstance(objType, false);
writer.Write();
}
catch (Exception err)
{
Console.WriteLine(err.Message);
}
}
}
}
}
Module[] modules = assembly.GetModules();
if (modules != null)
{
foreach (Module obj in modules)
{
Type[] types = obj.GetTypes();
foreach (Type objType in types)
{
if (objType.Name == "LogWriter")
{
try
{
objType.InvokeMember("typeID", BindingFlags.SetField | BindingFlags.Public | BindingFlags.Static, null, null, new object[] { 1200 });
IWriter writer = (IWriter)Activator.CreateInstance(objType, false);
writer.Write();
}
catch (Exception err)
{
Console.WriteLine(err.Message);
}
}
}
}
}
Useful classes:
Assembly
Module
Type
Activator
System.Reflection namespace is essential before using these classes!