通过classname实例化.Net对象

时间:2009-06-02 22:51:33

标签: .net

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

因此,我想基于XML文档中的类型

创建特定步骤类的实例

Step type =“GenerateReport”    .... 步骤类型=“PrintReport”    ....

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

2 个答案:

答案 0 :(得分:6)

我认为您只想使用Activator.CreateInstance方法:

var object = Activator.CreateInstance(null, "Classname");

答案 1 :(得分:5)

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

Type type = typeof(SomeKnownTypeInTheSameAssembly).GetType(fullName);
object obj = Activator.CreateInstance(type, args);