微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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加载相应的构造函数.

原文地址:https://www.jb51.cc/csharp/97213.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐