如何将“java通配符”转换为C#格式?
public abstract class AAA<T extends BBB<?>> extends CCC<T>{}
我不正确的C#代码
public abstract class AAA<T> : CCC<T> where T : BBB<?>{}
如何转换
BBB<?>
最佳答案
还有一个类似的问题C# generic "where constraint" with "any generic type" definition?并不特定于Java通配符。那里提供的答案可能会帮助您。
根据该答案,可能的类签名为:
public abstract class AAA<T, TOther> : CCC<T>
where T : BBB<TOther>
{}
即使您从未计划显式/隐式使用类型,C#中的泛型也必须具有命名的类型参数。并且所有类型参数都必须在方法/类/接口的标识符声明中命名。
请注意,如果需要,可以使用以下方式将TOther限制为仅对象类型:
public abstract class AAA<T, TOther> : CCC<T>
where T : BBB<TOther>
where TOther : object
{}