类型约束中的通用

时间:2010-08-15 12:56:22

标签: c# generics constraints

我正在努力研究一些仿制药。 以下是我的设置:

interface I<T> { }

[...]
void Add<T>(T obj) where T : I<??> { }

如何确保T方法中的Add实现I

2 个答案:

答案 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>