C#Activator.CreateInstance MissingMethod异常

时间:2010-11-11 17:52:41

标签: c# activator

我正在尝试创建具有相同基类型的对象实例:

  Assembly myAssembly = Assembly.GetExecutingAssembly();
  var objs = myAssembly.GetTypes().Where(t => t.BaseType == typeof(SearchLogicObjectBase)).OrderBy(o => o.FullName);

  foreach (var item in objs)
  {
    SearchLogicObjectBase p = (SearchLogicObjectBase)Activator.CreateInstance(item.GetType(), new Object[] { false });        
    _searchlogic.AddDefaultSearchObject(p);
  }

派生对象的构造函数如下:

public SearchLogicCsri()
  : this(true)
{ }

public SearchLogicCsri(bool extendsearch)
  : base(extendsearch)
{
  Table = "csri";
  ViewModel = "CsriViewModel";
  ExtendSearch = extendsearch;
}

并且基础对象(SearchLogicObjectBase)具有如下构造函数:

public SearchLogicObjectBase(bool extendsearch)
{
  _extendsearch = extendsearch;
}

但是,上面的代码会导致以下异常:

找不到类型为“System.RuntimeType”的构造函数。

base和derived类型都有一个构造函数,它只需要一个布尔值,所以我不确定为什么会出错。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:6)

不要传递item.GetType()而是item,因为item已经是一个类型了。