我正在努力研究一些仿制药。 以下是我的设置:
interface I<T> { }
[...]
void Add<T>(T obj) where T : I<??> { }
如何确保T
方法中的Add
实现I
?
答案 0 :(得分:8)
以下签名将允许Add
使用任何类型参数实现T
的任何I<>
。
void Add<T,S>(T obj) where T : I<S> {
}
使用此方法签名的缺点是类型推断没有启动,您必须指定所有类型参数,这看起来非常愚蠢:
blah.Add<I<int>, int>(iInstance);
更简单的方法是使用以下签名:
void Add<T>(I<T> obj) {
}
答案 1 :(得分:1)
您还需要传递T参数才能添加。
void Add<TI, TAny>(TI obj) where TI : I<TAny>