通过classname实例化.Net对象

Ala*_*man 4 .net

我有一个抽象类Step,以及我希望基于XML文档实例化的许多后代Step类.

因此,我想基于XML文档中的类型创建特定步骤类的实例

Step type ="GenerateReport".... Step type ="PrintReport"....

如何通过指定类名(以及理想情况下要传递给构造函数的参数)来实例化对象?

Nol*_*rin 6

我想你只想使用这个Activator.CreateInstance方法:

var object = Activator.CreateInstance(null, "Classname");
Run Code Online (Sandbox Code Playgroud)


Mar*_*ell 5

最简单的选择是Activator.CreateInstance接受a Type和a 的重载params object[].对于Type,您有时可以使用Type.GetType(string),但这不会检查所有程序集(只是当前程序集和某些系统程序集).如果名称是程序集限定的,那么你可能没问题 - 但如果它只是名称空间限定(即FullName)那么你可能想要使用Assembly.GetType(string)- 即

Type type = typeof(SomeKnownTypeInTheSameAssembly).GetType(fullName);
object obj = Activator.CreateInstance(type, args);
Run Code Online (Sandbox Code Playgroud)