2012-04-09 45 views
2

我想知道是否可以傳遞類型列表作爲泛型參數。 我有一個類需要獲得無限數量的類型,並與他們一起工作。 像這樣:將類型列表傳遞爲通用參數

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

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

    } 
} 
+1

已經在看元組.net 4.0 – Sandeep 2012-04-09 12:48:59

+0

在C#中無法進行模板元編程,如果這就是您要求的。 – dasblinkenlight 2012-04-09 12:51:37

回答

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}); 
} 
相關問題