加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 18:00:08 所属栏目:百科 来源:网络整理
导读:参见英文答案 Create an instance of a class from a string8个 在Windows应用程序中,使用C#,我有一个报告模块将依赖于类来填充报告.但是会有很多报告,我不想为每个报告编写代码. 流程将如此: 在报告编辑器中,报告将被分配一个类(即“应用程序”)作为一个字
参见英文答案 > 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加载相应的构造函数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读