System.Activator.CreateInstance的问题

时间:2010-01-10 12:36:24

标签: c# .net

我正在尝试使用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'。”我出错的任何想法?

2 个答案:

答案 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你是不是要在你的代码中引用实现。