我正在尝试使用System.Activator.CreatInstance来创建基于typeName的对象。我正在使用以下代码:
Object DataInstance = System.Activator.CreateInstance(
System.Reflection.Assembly.GetExecutingAssembly().FullName,
"CMS.DataAccess.SQLWebSite");
IWebSite NewWebPage = (IWebSite)DataInstance;
SQLWebSite
实施IWebSite
。但是,我收到以下错误:“无法将类型'System.Runtime.Remoting.ObjectHandle'的对象强制转换为'CMS.DataAccess.IWebSite'。”我出错的任何想法?
答案 0 :(得分:13)
致电unwrap
后尝试CreateInstance
,即:
Object DataInstance = System.Activator.CreateInstance(System.Reflection.Assembly.GetExecutingAssembly().FullName,
"CMS.DataAccess.SQLWebSite").Unwrap();
IWebSite NewWebPage = (IWebSite)DataInstance;
答案 1 :(得分:3)
如果您真的想使用类型名称而不是方法的强类型版本,那么您可以这样做:
var instance = System.Reflection.Assembly.GetExecutingAssembly().CreateInstance("CMS.DataAccess.SQLWebSite");
你可以使用:
System.Activator.CreateInstance(typeof(SQLWebSite))
但是mabe你是不是要在你的代码中引用实现。