C#Activator.CreateInstance MissingMethod异常

pil*_*mps 2 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);
  }
Run Code Online (Sandbox Code Playgroud)

派生对象具有如下构造函数:

public SearchLogicCsri()
  : this(true)
{ }

public SearchLogicCsri(bool extendsearch)
  : base(extendsearch)
{
  Table = "csri";
  ViewModel = "CsriViewModel";
  ExtendSearch = extendsearch;
}
Run Code Online (Sandbox Code Playgroud)

并且基础对象(SearchLogicObjectBase)有一个这样的构造函数:

public SearchLogicObjectBase(bool extendsearch)
{
  _extendsearch = extendsearch;
}
Run Code Online (Sandbox Code Playgroud)

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

找不到类型为"System.RuntimeType"的构造函数.

基类和派生类型都有一个构造函数,它只需要一个布尔值,所以我不知道为什么我会得到错误.

有人可以帮忙吗?

cod*_*nix 6

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