前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#中的反射Reflection动态加载引用

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

作者头像
bering
发布2019-12-03 11:54:58
1.4K0
发布2019-12-03 11:54:58
举报
文章被收录于专栏:游戏开发之旅游戏开发之旅

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

方法一:右键工程添加新建,添加一个类库;

完成编译后,将其中的.dll文件添加的需要的项目中,这里直接手动添加:

之后可以直接使用类库中的类了,使用快捷键Alt+shift+F10添加命名空间;

二.使用反射命名空间为using System.Reflection;动态添加;

1.将编译好的类库文件中的.dll文件复制到工作目录中,

代码语言:javascript
复制
  Assembly asse=Assembly.Load("Test");//加载.dll文件
             Module[]modules= asse.GetModules();//获得所有的.dll
             foreach (Module module in modules)
             {
                 Console.WriteLine(module.Name);  //打印出.dll文件名称
             }
代码语言:javascript
复制
 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();
代码语言:javascript
复制
 Type[] types = Assembly.GetAssembly(typeof (HandlerBase)).GetTypes();  //获得所有的类
            //HandlerBase是抽象类,继承自他的类必须实现他的方法
            foreach (var type in types)       //遍历其中所有的类
            {
                if (type.FullName.EndsWith("Handler"))  //类名是否是以“Handler”结尾
                {
                    Activator.CreateInstance(type);   //创建实例,相当于类的定义new一个对象
                }
            }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-08-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档