我正在尝试创建具有相同基类型的对象实例:
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类型都有一个构造函数,它只需要一个布尔值,所以我不确定为什么会出错。
有人可以帮忙吗?
答案 0 :(得分:6)
不要传递item.GetType()而是item,因为item已经是一个类型了。