从字符串反射,找不到方法-c#
我正在做一个需要自动实例化对象模型的方法。 事实上,它无法实例化对象,因为它说它找不到。 但我向你保证,这种方法是存在的 错误: 无法从程序集“数据模块”加载类型“tbl_客户”, 版本=1.0.0.0,区域性=中性,PublicKeyToken=null' 我用这个:从字符串反射,找不到方法-c#,c#,reflection,C#,Reflection,我正在做一个需要自动实例化对象模型的方法。 事实上,它无法实例化对象,因为它说它找不到。 但我向你保证,这种方法是存在的 错误: 无法从程序集“数据模块”加载类型“tbl_客户”, 版本=1.0.0.0,区域性=中性,PublicKeyToken=null' 我用这个: string className = "tbl_customer"; string namespaceName = "DataModules"; var myObj = Activator.CreateInstance(nam
string className = "tbl_customer";
string namespaceName = "DataModules";
var myObj = Activator.CreateInstance(namespaceName, className);
否则,要直接测试对象的功能实例,这将起作用:
tbl_customer t = new tbl_customer();
String tmp = Type.GetType().toString();
这样做我工作,为什么?
我会充满活力
var myObj = Activator.CreateInstance(namespaceName, className);
简而言之,不是DataModules中的方法
帮助我:)您需要传递
程序集名称
,然后传递完整的类型名称
:
string className = "DataModules.tbl_customer";
string assemblyName = "DataModules";
var myObj = Activator.CreateInstance(assemblyName, className);
请注意,
Activator.CreateInstance
不采用名称空间和类型名称,而是采用程序集名称和类型名称。类所在的程序集的名称是什么?该类位于model.edmx中,命名空间为DataModules,并且该名称位于当前正在执行的程序集中吗?我有一个编辑问题,有解决方案的图像,可以帮助您吗?不是真的。。让我重新表述一下这个问题:代码使用的是Activator.CreateInstance
吗?与您尝试实例化的类型在同一个程序集中?似乎是namespaceName
应该调用assemblyName
。。!拍摄@Chris。有人帮我改了:)