2016-12-13 3 views
0

Ich bin hier fest. In meiner vs Lösung haben wir 10 verschiedene Projekte. DAL enthält 2 EF 6.0 Objekte, Say EG und EL. Ich habe ein API-Projekt. In dem habe ich eine Funktion wie folgt, ich versuche Eigenschaften eines EF Klasse zurückzukehren:Erstellen "Typ" -Objekt einer Klasse von 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(); 
    } 

Aber jedes Mal, „thisType“ null zurück. Ist das wegen der AssemblyInformation? Wenn ja, was wäre der richtige Code? Ich habe den vollständig qualifizierten Namen von Assembly in string. Danke-- Anirban

+0

ich die Rückkehr glauben laden thisType.GetProperties zurückkehren sollte(); – Yitzchak

+0

Das ist ein Tippfehler hier, danke, ich berichtigte es. Aber immer noch bleibt das Problem bestehen. –

+0

Ich hatte auch einen Tippfehler, überprüfen Sie den Kommentar jetzt – Yitzchak

Antwort

1

Das Problem ist die letzte Zeile. Sie rufen .GetType() auf den Typ Type (Variable thisType) und das würde RuntimeType und nicht Ihren Typ zurückgeben. Die letzte Zeile sollte

return thisType.GetProperties(); 

sein und wenn Ihr Namespaces korrekt sind, so können Sie tun, um diese Namensräume haben (E.DAL.EL und E.DAL.EG) im Projekt, wird es funktionieren.

Wenn es die Namespaces nicht überprüft und verifiziert, dass diese Typen in derselben Assembly wie Ihr Code sind! Wenn sie sich in einer externen befinden, müssen Sie sie für die Methode GetType angeben.

sind diejenigen, in Assembly mit dem Namen SharedAssembly Unter der Annahme, dann müssen Sie sie auf diese Weise

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

Danke Lassen Sie mich überprüfen –

Verwandte Themen