C#中的反射Reflection动态加载引用

方法一:右键工程添加新建,添加一个类库;
完成编译后,将其中的.dll文件添加的需要的项目中,这里直接手动添加:
之后可以直接使用类库中的类了,使用快捷键Alt+shift+F10添加命名空间;
二.使用反射命名空间为using System.Reflection;动态添加;
1.将编译好的类库文件中的.dll文件复制到工作目录中,
  Assembly asse=Assembly.Load("Test");//加载.dll文件
            Module[]modules= asse.GetModules();//获得所有的.dll
            foreach (Module module in modules)
            {
                Console.WriteLine(module.Name);  //打印出.dll文件名称
            }
 
 
 
 

 Type[] types = asse.GetTypes(); //获得.dll引用中的类         

   foreach (Type  type in types)//遍历其中所定义的类       

     {               

         Console.WriteLine(type);//打印类名      

      }          

        Type typeHelper=asse.GetType("Test.sqlServerHelp");  //通过类名获取其中的一个类返回一个type类型的变量           

        object obHelp= Activator.CreateInstance(typeHelper);  //等于创建对象

       sqlServerHelp sql = new sqlServerHelp();            //要使用该类中的方法,可以通过接口实现,方法是将object类型的变量obHelp强制转化为该类所继承的接口;          

  //在使用接口调用该类中的方法;           

Console.ReadKey();

 Type[] types = Assembly.GetAssembly(typeof (HandlerBase)).GetTypes();  //获得所有的类
            //HandlerBase是抽象类,继承自他的类必须实现他的方法
            foreach (var type in types)       //遍历其中所有的类
            {
                if (type.FullName.EndsWith("Handler"))  //类名是否是以“Handler”结尾
                {
                    Activator.CreateInstance(type);   //创建实例,相当于类的定义new一个对象
                }
            }


猜你喜欢

转载自blog.csdn.net/cjb_king/article/details/52093950