在设计时创建一个不知道类名的对象

7
使用反射,我需要调查一个用户DLL并在其中创建一个类的对象。有什么简单的方法吗?
5个回答

15

3

System.Reflection.Assembly是你需要使用的类。它包含了许多用于迭代用户DLL中包含的类型的方法。您可以遍历每个类,也许查看它是否继承自特定的接口等。

http://msdn.microsoft.com/en-us/library/system.reflection.assembly_members.aspx

请调查Assembly.GetTypes()方法以获取类型列表,或者使用Assembly.GetExportedTypes()仅获取公共类型。


1
你可以使用 Activator.CreateInstance 从 Type 对象创建一个类的实例,要获取 dll 中的所有类型,可以使用 Assembly.GetTypes。

1

1

正如已经提到的,您需要访问System.Reflection命名空间。

如果您事先知道要加载的DLL的位置/名称,则需要遍历Assembly.GetTypes()。

伪代码如下:

创建一个程序集对象。

遍历程序集中包含的所有类型。

一旦找到您要查找的类型,就调用它(CreateInstance)...

明智地使用它。

;)

如果您想查看Reflection代码,我有很多,但是这个任务非常简单,在野外至少有十几篇带有示例的文章。 (也就是Google)。尽管如此,MSDN是Reflection参考的好朋友。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接