现在的位置: 首页 > 综合 > 正文

使用反射动态创建类的实例

2012年08月05日 ⁄ 综合 ⁄ 共 1613字 ⁄ 字号 评论关闭

 

   public interface IWriter
    
{
        
void Write();
    }

    
    
public class LogWriter:IWriter
    
{
        
public static int typeID;


        
IWriter Members
    }

 

 

  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, nullnullnew 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!

抱歉!评论已关闭.