使用反射,我需要研究用户 DLL 并在其中创建类的对象。

简单的做法是什么?

有帮助吗?

解决方案

其他提示

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 仍然是您反射参考的朋友。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top