1

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

  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”的构造函数。

基类型和派生类型都有一个接受单个布尔值的构造函数,所以我不确定为什么会出现错误。

有人可以帮忙吗?

4

1 回答 1

7

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

于 2010-11-11T17:58:42.237 回答