类型约束中的通用

Jon*_*ist 4 c# generics constraints

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

interface I<T> { }

[...]
void Add<T>(T obj) where T : I<??> { }
Run Code Online (Sandbox Code Playgroud)

我如何能确保TAdd方法实现I

Igo*_*aka 8

以下签名将允许使用任何类型参数Add获取任何T实现I<>.

void Add<T,S>(T obj) where T : I<S> {
}
Run Code Online (Sandbox Code Playgroud)

使用此方法签名的缺点是类型推断没有启动,您必须指定所有类型参数,这看起来非常愚蠢:

blah.Add<I<int>, int>(iInstance);
Run Code Online (Sandbox Code Playgroud)

一种更简单的方法是使用以下签名:

void Add<T>(I<T> obj) {
}
Run Code Online (Sandbox Code Playgroud)