为了账号安全,请及时绑定邮箱和手机立即绑定

利用反射得到一个命名空间下的所有类,并调用?

利用反射得到一个命名空间下的所有类,并调用?

RISEBY 2018-10-10 05:06:46
怎么样利用反射,得到一个命名空间下的所有类,并且调用?用 Assembly.GetExecutingAssembly().GetTypes() ,因为是一个外部的DLL 或者说,怎么样可以得到继承于某一个接口的类,并且调用他们?
查看完整描述

2 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

Assembly.LoadFrom("assemblyName").GetTypes();

Assembly.Load("assemblyName").GetTypes();

遍历, 再通过Type.GetInterface("```"),如果结果不为null,那就说明找到了

再Activator.CreateInstance(“”)即可

还是写段代码吧:

 

  foreach(Type t in Assembly.Load("MyAssemblyName").GetTypes())

       {

           if(t.GetInterface("IYourInterface")!=null)

           {

           IYourInterface=(IYourInterface)Activator.CreateInstance(t);

               ````

           }

       }


 foreach(Type t in Assembly.Load("MyAssemblyName").GetTypes())
      {
          if(t.GetInterface("IYourInterface")!=null)
          {
          IYourInterface=(IYourInterface)Activator.CreateInstance(t);
              ````
          }
      }

 

hoho就这样


查看完整回答
反对 回复 2018-10-24
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

(类型)Assembly.Load(路径).CreateInstance(类名);

查看完整回答
反对 回复 2018-10-24
  • 2 回答
  • 0 关注
  • 538 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信