当我试图回答这个问题时:
是否可以摆脱 Service 类中的 TClient 泛型类型
我发现了一个奇怪的用法,我从来没有设计过这种不可编译的语法,下面是我遇到的一个代表:
interface IGeneric<T> {
}
partial class SomeClass {
// won't compile
public static void SomeMethod<U>(Action<T> d) where T: IGeneric<U> {
}
}
即使声明为:
class Concrete: IGeneric<object> {
}
partial class SomeClass {
public static void SomeMethod<U>(Action<IGeneric<U>> d) { // compiles
}
}
不会使以下代码可编译:
var d=default(Action<Concrete>);
SomeClass.SomeMethod(d); // won't compile
我不知道在不涉及两个类型参数的情况下可以使用的语法。
所以我想知道这种反向类型推断是否有语法?还是解决方法?