【发布时间】:2015-06-17 17:49:05
【问题描述】:
使用反射,我需要调查一个用户 DLL 并在其中创建一个类的对象。
简单的方法是什么?
【问题讨论】:
标签: c# reflection
使用反射,我需要调查一个用户 DLL 并在其中创建一个类的对象。
简单的方法是什么?
【问题讨论】:
标签: c# reflection
【讨论】:
System.Reflection.Assembly 是您要使用的类。它包含许多用于迭代用户 DLL 包含的类型的方法。您可以遍历每个类,也许看看它是否继承自特定接口等。
http://msdn.microsoft.com/en-us/library/system.reflection.assembly_members.aspx
调查Assembly.GetTypes() 方法以获取类型列表,或Assembly.GetExportedTypes() 仅用于公共类型。
【讨论】:
您可以使用 Activator.CreateInstance 从 Type 对象创建类的实例,以获取 dll 中的所有类型,您可以使用 Assembly.GetTypes
【讨论】:
看看这些链接:
http://www.java2s.com/Code/CSharp/Development-Class/Createanobjectusingreflection.htm
http://msdn.microsoft.com/en-us/library/k3a58006.aspx
你基本上使用反射来加载程序集,然后找到你感兴趣的类型。一旦你有了类型,你可以要求找到它的构造函数或其他方法/属性。一旦有了构造函数,就可以调用它。简单!
【讨论】:
正如已经说过的,您需要戳 System.Reflection 命名空间。
如果您事先知道要加载的 DLL 的位置/名称,则需要遍历 Assembly.GetTypes()。
在伪代码中它看起来像这样:
创建和组装对象。
遍历程序集中包含的所有类型。
一旦你找到你要找的,调用它(CreateInstance)…
明智地使用它。
;)
如果你想四处看看,我有很多反射代码,但任务真的很简单,至少有十多篇关于示例的文章。 (又名谷歌)。 尽管如此,MSDN 是反射参考的朋友。
【讨论】: