首页 新闻 会员 周边 捐助

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

0
[已解决问题] 解决于 2010-04-28 13:07

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

用 Assembly.GetExecutingAssembly().GetTypes() ,因为是一个外部的DLL

 

或者说,怎么样可以得到继承于某一个接口的类,并且调用他们?

Dozer的主页 Dozer | 初学一级 | 园豆:30
提问于:2010-04-27 12:44
< >
分享
最佳答案
2

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就这样

 

LittlePeng | 老鸟四级 |园豆:3445 | 2010-04-27 14:04
其他回答(1)
1

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

Joe_true | 园豆:98 (初学一级) | 2010-04-27 13:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册