可以说我有一个通用接口IFace<T, U>
。 T
和U
可以用其他一些方式来约束,但是我认为这与问题无关。
我想用以下定义创建一个新的通用类GenClass
:class GenClass<T> where T: IFace
即我想告诉编译器GenClass
应该在不指定泛型类型的情况下处理IFace
的任何实现。
这是否可能,或者我是否需要指定T
和U
通用参数?
我试过编写IFace
以及IFace<>
或IFace<,>
,但是编译器总是很合适-所以我认为这无法完成。不过,也许我会以错误的方式进行操作?
最佳答案
这是可能的,还是我需要指定T和U通用参数?
恐怕您需要它们。你需要
class GenClass<T, TX, TY> where T : IFace<TX, TY>
假设您无法创建泛型接口派生的非泛型
IFace
接口-这通常是最简单的方法:public interface IFace
{
// Include anything that doesn't need the type parameters here
}
public interface IFace<T1, T2> : IFace
{
// Include anything that needs the type parameters here
}
然后您可以拥有:
class GenClass<T> where T : IFace
因为现在非类属接口确实存在。