我正在努力與一些泛型。 以下是我的設置:類型約束中的泛型
interface I<T> { }
[...]
void Add<T>(T obj) where T : I<??> { }
我如何能確保T
在Add
方法實現I
?
我正在努力與一些泛型。 以下是我的設置:類型約束中的泛型
interface I<T> { }
[...]
void Add<T>(T obj) where T : I<??> { }
我如何能確保T
在Add
方法實現I
?
下面的簽名將允許Add
採取實現I<>
與任何類型參數的任何T
。
void Add<T,S>(T obj) where T : I<S> {
}
使用這種方法簽名的缺點是,類型推斷不踢,你必須指定所有類型的參數,它看起來荒唐透頂:
blah.Add<I<int>, int>(iInstance);
一個更簡單方法是使用下面的簽名:
void Add<T>(I<T> obj) {
}
'void Add
您還需要傳遞T參數才能添加。
void Add<TI, TAny>(TI obj) where TI : I<TAny>
的方法'TI'是一個通用的參數,而不是一個通用的參數,所以你不能'TI
對不起 - 'Add'不是接口的一部分'I'但在不同的類 – 2010-08-15 13:17:19