2017-10-18 112 views
2

我有帶兩個類型參數中的第一個是具有我通過其類型作爲第二個參數的項目的列表的類的通用方法:如何將未定義數量的類型參數傳遞給泛型方法?

public static TJCls GetComplexLog<TJCls, TListObj>(int logIds) where TJCls : ISplitList<TListObj> 
{ 
    //here I deserialize the string from DB to TJCls, and deserialize List<string> 
    //from DB to List<TListObj> and set the TJCls's list via the ISplitList's SetList method: 
    log.SetList(lst); 
} 

但現在的對象可以具有多於一個的列表(未知號碼),所以有沒有辦法我可以通過任何數量的類型參數,如params

回答

0

您在C#中建議的語法中的可變數量的類型參數是不可能的。也就是說,可以使用如下類型描述符的序列。

public static GetComplexLog(int logIds, IEnumerable<Type> TypeSeq) 
{ 
    // todo 
} 

使用此簽名可以使用反射對類型信息做一些有用的事情,甚至可以創建實例。然而,靜態類型檢查約束類型,如

where TJCls : ISplitList<TListObj> 

也將是不可能的,因爲在運行時反射式安全將不得不使用,可以做的是扔在違反異常最好的。

0

不,你不能像泛型類型參數那樣傳遞params參數。在你的場景中,你可以傳遞TListObj作爲方法參數,對吧?

相關問題