2012-05-23 42 views
6

tôi muốn nhờ giúp đỡ. lớp tôi đã sau:Nhận phụ huynh của lớp học dụ

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

    } 
} 

...

POCOConfiguration instance = new POCOConfiguration(); 

Làm thế nào tôi có thể nhận được từ dụ loại POCO?

Cảm ơn

Trả lời

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

Nếu lớp có một constructor paremeterless , sau đó bạn có thể viết:

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

Nếu không, bạn phải sử dụng phản ánh, xem Activator lớp.

0

việc kiểm tra này

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

sẽ làm việc ...

+1

Nếu bạn đang đặc biệt thử nghiệm cho các loại POCO như thế này, sau đó nó dễ dàng hơn để làm 'if (ví dụ là EntityTypeConfiguration ) {}' chứ không phản xạ sử dụng. –

+0

Tôi có! Tôi đã không cố gắng làm bạn khó chịu, bình luận của tôi là nhiều hơn cho những người khác chỉ ra rằng việc sử dụng sự phản chiếu không phải là cách tốt nhất để kiểm tra một loại cụ thể trong ví dụ này. –

+0

yeh, bạn nói đúng .. 1 nhận xét của bạn – Talha

0

Nếu tôi hiểu bạn phải bạn muốn để có được các loại POCO. Sau đó khai báo một phương thức và gọi nó như sau;

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

gọi;

Type t = GetTypeOfPoco(instance); 
Các vấn đề liên quan