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

前端之家收集整理的这篇文章主要介绍了C#将动态字符串转换为现有的Class前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > Create an instance of a class from a string8个
在Windows应用程序中,使用C#,我有一个报告模块将依赖于类来填充报告.但是会有很多报告,我不想为每个报告编写代码. @H_301_3@流程将如此:
在报告编辑器中,报告将被分配一个类(即“应用程序”)作为一个字符串.
用户选择要运行的报表时,代码将从SQL查询获取数据.
代码获取数据,并找出将数据放入哪个类.
然后,报告将使用类中的数据填充报告.

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

@H_301_3@例如:

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

解决方法

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

Type type = Type.GetType(assemblyQualifiedName);
object instance = Activator.CreateInstance(type);
@H_301_3@请注意,您必须通过assembly qualified name,除非该类型在mscorlib或当前正在执行的程序集中.

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

原文链接:/csharp/97213.html

猜你在找的C#相关文章