2010-11-11 64 views
2

我试图创建具有相同的基本类型这样的对象实例:C#Activator.CreateInstance MissingMethod例外

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

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

任何人都可以帮忙吗?

回答

6

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

+0

非常欢呼 - 这是诀窍。 – pilsdumps 2010-11-11 20:55:49