2012-05-23 12 views
6

me gustaría pedir ayuda. clase he siguiente:Obtener el padre de la clase de la instancia

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

    } 
} 

...

POCOConfiguration instance = new POCOConfiguration(); 

¿Cómo puedo obtener de ejemplo el tipo POCO?

Gracias

Respuesta

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

Si la clase tiene un constructor paremeterless , entonces se puede escribir:

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

lo contrario tendrá que utilizar la reflexión, ver Activator clase.

0

cheque esta

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

va a funcionar ...

+1

Si está probando específicamente para el tipo POCO así, entonces es mucho más fácil hacerlo si '(instancia es EntityTypeConfiguration ) {}' en lugar de utilizar la reflexión. –

+0

Tengo! No intenté molestarlo, mi comentario fue más para otras personas para señalar que el uso de la reflexión no es la mejor manera de probar un tipo específico en este ejemplo. –

+0

yeh, tienes razón ... +1 a tu comentario – Talha

0

Si le entiendo derecho que desea obtener el tipo de POCO. Luego declare un método y llámelo como el siguiente;

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

llámalo;

Type t = GetTypeOfPoco(instance); 
Cuestiones relacionadas