Jon*_*ist 4 c# generics constraints
我正在努力研究一些仿制药.以下是我的设置:
interface I<T> { }
[...]
void Add<T>(T obj) where T : I<??> { }
Run Code Online (Sandbox Code Playgroud)
我如何能确保T在Add方法实现I?
以下签名将允许使用任何类型参数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)