Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在设计时不知道类名的情况下创建对象_C#_Reflection - Fatal编程技术网

C# 在设计时不知道类名的情况下创建对象

C# 在设计时不知道类名的情况下创建对象,c#,reflection,C#,Reflection,使用反射,我需要调查一个用户DLL并在其中创建一个类的对象 做这件事的简单方法是什么?试试看 您可以使用Activator.CreateInstance从类型对象创建类的实例,以获取dll中的所有类型,您可以使用Assembly。GetTypes查看以下链接: 您基本上使用反射来加载程序集,然后查找您感兴趣的类型。一旦你有了类型,你可以要求找到它的构造函数或其他方法/属性。一旦拥有了构造函数,就可以调用它。轻松点 System.Reflection.Assembly是您想要使用的类。它包含许

使用反射,我需要调查一个用户DLL并在其中创建一个类的对象


做这件事的简单方法是什么?

试试看

您可以使用Activator.CreateInstance从类型对象创建类的实例,以获取dll中的所有类型,您可以使用Assembly。GetTypes

查看以下链接:


您基本上使用反射来加载程序集,然后查找您感兴趣的类型。一旦你有了类型,你可以要求找到它的构造函数或其他方法/属性。一旦拥有了构造函数,就可以调用它。轻松点

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


调查获取类型列表的
Assembly.GetTypes()
方法,或仅对公共类型调查
Assembly.GetExportedTypes()

如前所述,您需要插入System.Reflection命名空间

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

在伪代码中,它看起来像这样:

创建和组装对象

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

找到要查找的对象后,调用它(CreateInstance)

明智地使用它

)()

如果你想四处看看的话,我有很多反射代码,但是任务非常简单,至少有十几篇文章都有示例。(又名谷歌)。 尽管如此,MSDN还是您的朋友,供您参考