泛型双界面

lan*_*ady 2 .net c# generics wildcard

public interface IFoo
public class Foo : IFoo
public interface ILang<T> where T:IFoo
public class Lang : ILang<Foo>
Run Code Online (Sandbox Code Playgroud)

但现在,我想用通配符这样的东西

public class CarroMontadora<T> where T:ILang<?>
Run Code Online (Sandbox Code Playgroud)

因为这不适用于我的界面:

public class MYCLASS<T> where T:ILang<IFoo>
Run Code Online (Sandbox Code Playgroud)

这不是太聪明,因为不是那么泛型:

public class MYCLASS<T,U> where T:ILang<U> where U: IFoo
Run Code Online (Sandbox Code Playgroud)

ang*_*son 7

您必须为新类添加另一个通用参数:

public class CarroMontadora<T1, T2>
    where T2 : IFoo
    where T1 : ILang<T2>
{
}
Run Code Online (Sandbox Code Playgroud)