2012-05-23 21 views
6

Chciałbym prosić o pomoc. mam następujące klasy:Uzyskaj rodzica klasy instancji

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

    } 
} 

...

POCOConfiguration instance = new POCOConfiguration(); 

Jak mogę dostać od przykład typu POCO?

Dzięki

Odpowiedz

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

Jeśli klasa ma konstruktora paremeterless , można napisać:

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

przeciwnym wypadku trzeba użyć refleksji, zobacz Activator klasę.

0

check to

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

zadziała ...

+1

Jeśli testowanie specjalnie dla danego typu POCO jak ten, to jest o wiele łatwiej zrobić 'if (instancja jest EntityTypeConfiguration ) {}' Zamiast używać refleksji. –

+0

Mam! Nie próbowałem cię zdenerwować, mój komentarz był bardziej dla innych osób, aby wskazać, że używanie refleksji nie jest najlepszym sposobem testowania określonego typu w tym przykładzie. –

+0

yeh, masz rację .. +1 do twojego komentarza – Talha

0

Jeśli rozumiem cię chcesz uzyskać typ POCO. Następnie zadeklaruj metodę i nazwij ją następująco;

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

zadzwoń;

Type t = GetTypeOfPoco(instance); 
Powiązane problemy