通过类名实例化一个.Net对象

4
我有一个抽象类Step,还有许多派生的Step类,我想根据XML文档实例化特定的Step类。
因此,我想根据XML文档中的类型创建特定步骤类的实例。
例如:
Step type="GenerateReport" .... Step type="PrintReport" ....
我该如何通过指定类名(最好是要传递给构造函数的参数)来实例化对象?
2个回答

6
我认为你只需要使用 Activator.CreateInstance 方法:
var object = Activator.CreateInstance(null, "Classname");

5
最简单的选项是使用接受 Typeparams object[] 参数的 Activator.CreateInstance 重载。对于 Type,有时可以使用 Type.GetType(string),但这并不检查所有程序集(只检查当前程序集和一些系统程序集)。如果名称是程序集限定的,那么您可能会没问题,但如果它只是命名空间限定的(即FullName),那么您可能需要使用 Assembly.GetType(string) - 例如:
Type type = typeof(SomeKnownTypeInTheSameAssembly).GetType(fullName);
object obj = Activator.CreateInstance(type, args);

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