我有一个抽象类Step,以及我希望基于XML文档实例化的许多后代Step类。
因此,我想基于XML文档中的类型
创建特定步骤类的实例Step type =“GenerateReport” .... 步骤类型=“PrintReport” ....
如何通过指定类名(以及理想情况下要传递给构造函数的参数)来实例化对象?
答案 0 :(得分:6)
我认为您只想使用Activator.CreateInstance
方法:
var object = Activator.CreateInstance(null, "Classname");
答案 1 :(得分:5)
最简单的选项是Activator.CreateInstance
重载,它接受Type
和params object[]
。对于Type
,您可以有时使用Type.GetType(string)
,但这不会检查所有程序集(只是当前程序集和某些系统程序集)。如果名称是程序集限定的,那么你可能没问题 - 但如果它只是名称空间限定的(即FullName)那么你可能想要使用Assembly.GetType(string)
- 即。
Type type = typeof(SomeKnownTypeInTheSameAssembly).GetType(fullName);
object obj = Activator.CreateInstance(type, args);