大佬教程收集整理的这篇文章主要介绍了C#Reflection:使用字符串类名称实例化一个对象,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
所以,假设在我的项目中,我有一个名为Contabilidad的表单,它有Contabilidad.cs是主类,所以如果我想创建一个新的表单,并显示它,我这样做:
Contabilidad frmConta = new Contabilidad(); frmConta.Show();
但是在这种情况下,由于菜单选项存储在数据库中,所以在数据库中只有字符串“Contabilidad”.所以,我想使用C#反射创建一个Contabilidad的实例或任何其他只有字符串格式的类名称的形式.
首先我试过这个:
Form frmConta= (Form)Activator.CreateInstance(null,"Contabilidad").Unwrap();
因为我读了一个StackOverflow问题,如果我使用Null我指的是当前的程序集(我的表单都在同一个项目),但我得到这个消息:
Could not load type 'Contabilidad' from assembly 'AccounTingSA,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null'.
类的定义是下一个:
namespace AccounTingSA { public partial class Contabilidad : Form { public Contabilidad() { InitializeComponent(); } ...
我也试过这个:
Assembly assembly = Assembly.Load("AccounTingSA"); Type t = assembly.GetType("Contabilidad"); Form frmConta = (Form)Activator.CreateInstance(t);
但我得到ArgumentNullException与此消息:
Value cAnnot be null. Parameter name: type
因为t变量为空.
我做错了什么?提前致谢.
以上是大佬教程为你收集整理的C#Reflection:使用字符串类名称实例化一个对象全部内容,希望文章能够帮你解决C#Reflection:使用字符串类名称实例化一个对象所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。