2010-11-11 6 views
2

Je suis en train de créer des instances d'objets qui ont le même type de base comme celui-ci:C# Activator.CreateInstance MissingMethod exception

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); 
    } 

Les objets dérivés ont des constructeurs comme ceci:

public SearchLogicCsri() 
    : this(true) 
{ } 

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

et l'objet de base (SearchLogicObjectBase) a un constructeur comme celui-ci:

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

Cependant, ce qui précède le code entraîne l'exception suivante:

Le constructeur sur le type 'System.RuntimeType' est introuvable.

Les deux types de base et dérivés ont un constructeur qui prend un seul booléen, donc je ne suis pas sûr pourquoi je reçois l'erreur.

Quelqu'un peut-il vous aider s'il vous plaît?

Répondre

6

Ne pas passer item.GetType() mais item, car item est déjà un type.

+0

Bravo beaucoup, ça fait l'affaire. – pilsdumps