让我举个例子:
我有一些通用的类/接口定义:
interface IGenericCar< T > {...}
我想要与上面的类相关联的另一个类/接口,例如:
interface IGarrage< TCar > : where TCar: IGenericCar< (**any type here**) > {...}
基本上,我希望我的通用IGarrage依赖于IGenericCar
,无论它是IGenericCar<int>
还是IGenericCar<System.Color>
,因为我对该类型没有任何依赖。
答案 0 :(得分:133)
通常有两种方法可以实现这一目标。
选项1 :向代表IGarrage
的{{1}}添加另一个参数,该参数应传递到T
约束中:
IGenericCar<T>
Option2 :为interface IGarrage<TCar,TOther> where TCar : IGenericCar<TOther> { ... }
定义一个基础接口,该接口不是通用的,并且会限制该接口
IGenericCar<T>
答案 1 :(得分:6)
做以下事情是否有意义:
interface IGenericCar< T > {...}
interface IGarrage< TCar, TCarType >
where TCar: IGenericCar< TCarType > {...}