2012-05-23 10 views
6

私は助けを求めたいと思います。 私はクラスを次ていますインスタンスのクラスの親を取得

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

    } 
} 

...

POCOConfiguration instance = new POCOConfiguration(); 

私はインスタンスタイプPOCOから取得できますか?

おかげ

答えて

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

をクラスがparemeterlessのコンストラクタを持っている場合

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

これ以外の場合は、Activatorクラスを参照する必要があります。この

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

が動作する

0

チェック...

+1

あなたは、特にこのようなPOCOタイプのためにテストしている場合、それは '} {(インスタンスがEntityTypeConfiguration である)場合、'ではなく、使用リフレクションを行うためにはるかに簡単です。 –

+0

私は持っている!私はあなたを怒らせようとはしていませんでしたが、私のコメントは、この例で特定のタイプをテストするのがリフレクションを使用するのがベストではないことを他の人が指摘することが多くありました。 –

+0

ええ、あなたは正しいです。あなたのコメントに+1 – Talha

0

私はあなたを理解していれば右のあなたは、POCOの種類を取得したいです。メソッドを宣言し、次のように呼び出します。

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

と呼びます。

Type t = GetTypeOfPoco(instance); 
関連する問題