2012-05-23 13 views
6

Ich möchte um Hilfe bitten. ich habe folgende Klasse:Holen Eltern der Klasse der Instanz

public class POCOConfiguration : EntityTypeConfiguration<POCO> 
{ 
    public POCOConfiguration() 
    { 

    } 
} 

...

POCOConfiguration instance = new POCOConfiguration(); 

Wie kann ich von Instanz der Typ POCO bekommen?

Dank

Antwort

9
instance.GetType().BaseType.GetGenericArguments()[0] 
0

Wenn die Klasse einen paremeterless Konstruktor , dann können Sie schreiben:

public class POCOConfiguration : EntityTypeConfiguration<POCO> where POCO : new() 
{  
    public POCOConfiguration() 
    { 
     var poco = new POCO(); 
    } 
} 

Andernfalls müssen Sie Reflektion verwenden, Activator Klasse.

0

Kontrolle dieses

POCOConfiguration instance = new POCOConfiguration(); 
Type t = instance.GetType().BaseType.GetGenericArguments()[0]; 
//here t is the type of POCO 

arbeiten ...

+1

Wenn Sie speziell sind für den POCO-Typen wie diese Prüfung, dann ist es viel einfacher zu tun 'if (Beispiel EntityTypeConfiguration ist ) {}' statt Reflektion verwenden. –

+0

Ich habe! Ich habe nicht versucht, dich zu verärgern, mein Kommentar war mehr für andere Leute, um darauf hinzuweisen, dass die Verwendung von Reflektion nicht die beste Möglichkeit ist, in diesem Beispiel nach einem bestimmten Typ zu suchen. –

+0

yeh, du hast Recht .. +1 zu deinem Kommentar – Talha

0

Wenn ich verstehe, dass Sie sich wünschen Sie die Art der POCO zu bekommen. Dann deklariere eine Methode und rufe sie wie folgt auf;

public Type GetTypeOfPoco<T>(EntityTypeConfiguration<T> entityTypeConfiguration) 
{ 
    Type t = typeof(T); 
    return t; 
} 

nennen Sie es;

Type t = GetTypeOfPoco(instance); 
Verwandte Themen