2012-04-09 9 views
2

タイプのリストを汎用パラメーターとして渡すことができるのだろうかと思いました。 私は、不定数の型を取得してそれらを処理する必要があるクラスを持っています。このような 何か:タイプのリストを汎用パラメーターとして渡します

class o<TTypeCollection> 
{ 
    private void someMethod() 
    { 

     repository.Save < TTypeCollection.First() > (MyCollectionViewSource.CurrentItem as TTypeCollection.First()); 

    } 
} 
+1

がでタプルを見てください.net 4.0 – Sandeep

+0

C#でテンプレートメタプログラミングを行う方法はありません。 – dasblinkenlight

答えて

2

ありC#のC++スタイルでテンプレートメタプログラミングを行うには方法はありませんが、あなたはリフレクションを使用してそれを行うことができます。

private void someMethod() { 
    var genericSave = repository // This can be done during initialization 
     .GetType() 
     .GetMethods() 
     .Where(m => m.Name == "Save" && m.IsGenericMethodDefinition); 
    var t = MyCollectionViewSource.CurrentItem.GetType(); 
    genericSave 
     .MakeGenericMethod(new[] {t}) 
     .Invoke(new object[] {MyCollectionViewSource.CurrentItem}); 
} 
関連する問題