C#将动态字符串转换为现有的Class

参见英文答案 > Create an instance of a class from a string8个
在Windows应用程序中,使用C#,我有一个报告模块将依赖于类来填充报告.但是会有很多报告,我不想为每个报告编写代码.

流程将如此:
在报告编辑器中,报告将被分配一个类(即“应用程序”)作为一个字符串.
用户选择要运行的报表时,代码将从SQL查询获取数据.
代码获取数据,并找出将数据放入哪个类.
然后,报告将使用类中的数据填充报告.

这是我的困境,我如何使代码动态化,以便代码将转换分配的类到适当的类对象?

例如:

gVar = Report;
(gVar.ReportClass)oClass = new gVar.ReportClass;

解决方法

使用 Type.GetType(特别是采用字符串参数的一个过载(例如,Type.GetType(string)))加载相应类的“实例”,然后在该实例上使用 Activator.CreateInstanceType.GetConstructor来实例化一个实例.

所以,像什么

Type type = Type.GetType(assemblyQualifiedname);
object instance = Activator.CreateInstance(type);

请注意,您必须通过assembly qualified name,除非该类型在mscorlib或当前正在执行的程序集中.

另外,Activator.CreateInstance假定存在一个认构造函数.如果没有认构造函数,或者需要将一些参数传递给构造函数,则必须使用Activator.CreateInstance的overload,可以指定构造函数参数,或者使用Type.GetConstructor加载相应的构造函数.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...