2016-12-13 1 views
0

Je suis coincé ici. Dans ma solution vs nous avons 10 projets différents. DAL contient 2 objets EF 6.0, Say EG et EL. J'ai un projet API. Où j'ai une fonction comme suit, je suis en train de retourner les propriétés d'une classe EF:Création d'un objet "Type" d'une classe par Type.getType

public IEnumerable<PropertyInfo> GetGetProperties(string className, string instanceType) 
    { 
     Type thisType; 

     if (instanceType.Contains("G")) 
     { 
      thisType = Type.GetType("E.DAL.EG." + className); 
     } 
     else 
     { 
      thisType = Type.GetType("E.DAL.EL." + className); 
     }    
     return thisType.GetType().GetProperties(); 
    } 

Mais chaque fois que « thisType » renvoie NULL. Est-ce dû à AssemblyInformation? Si oui, quel serait le bon code? J'ai le nom complet de l'Assemblée dans la chaîne. Thanks-- Anirban

+0

je crois que le retour devrait être de retour thisType.GetProperties(); – Yitzchak

+0

C'est une faute de frappe ici, merci, je l'ai rectifié. Mais le problème demeure. –

+0

J'ai eu une faute de frappe aussi, vérifiez le commentaire maintenant – Yitzchak

Répondre

1

Le problème est la dernière ligne. Vous appelez .GetType() sur le type Type (variable thisType) et cela retournera RuntimeType et non votre type. La dernière ligne devrait être

return thisType.GetProperties(); 

et si vos espaces de noms sont corrects, vous avez ces espaces de noms (E.DAL.EL et E.DAL.EG) dans le projet, il fonctionnera.

S'il ne vérifie pas les espaces de noms et vérifie que ces types sont dans le même assemblage que votre code! Si elles sont dans un externe, vous devez le spécifier pour la méthode GetType.

Supposant ceux qui sont dans l'assemblage nommé SharedAssembly alors vous devez les charger de cette façon

thisType = Type.GetType("E.DAL.EG." + className+ ", SharedAssembly"); 
+0

Merci Laisse-moi vérifier –