我有一个抽象类Step,以及我希望基于XML文档实例化的许多后代Step类.
因此,我想基于XML文档中的类型创建特定步骤类的实例
Step type ="GenerateReport".... Step type ="PrintReport"....
如何通过指定类名(以及理想情况下要传递给构造函数的参数)来实例化对象?
我想你只想使用这个Activator.CreateInstance方法:
var object = Activator.CreateInstance(null, "Classname");
Run Code Online (Sandbox Code Playgroud)
最简单的选择是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)
| 归档时间: |
|
| 查看次数: |
234 次 |
| 最近记录: |