举个例子:
我有一些通用的类/接口定义:
I have some generic class/interface definition:
interface IGenericCar<>{...}
我有另一个类/接口,我想与上面的类相关联,例如:
I have another class/interface that I want to relate with class above, for example:
接口IGarrage: 其中 TCar: IGenericCar<(**这里是任何类型**) >{...}
基本上,我希望我的通用 IGarrage 依赖于 IGenericCar,无论它是 IGenericCar 还是 IGenericCar,因为我对该类型没有任何依赖.
Basically, I want my generic IGarrage to be dependent on IGenericCar, regardless if it's IGenericCar<int> or IGenericCar<System.Color>, because I don't have any dependency to that type.
推荐答案通常有两种方法可以实现这一点.
There are typically 2 ways to achieve this.
Option1:向 IGarrage 添加另一个参数,表示应该传递到 IGenericCar 的 T> 约束:
Option1: Add another parameter to IGarrage representing the T which should be passed into the IGenericCar<T> constraint:
interface IGarrage<TCar,TOther> where TCar : IGenericCar<TOther> { ... }Option2:为 IGenericCar 定义一个基本接口,该接口不是通用的并且限制该接口
Option2: Define a base interface for IGenericCar<T> which is not generic and constrain against that interface
interface IGenericCar { ... } interface IGenericCar<T> : IGenericCar { ... } interface IGarrage<TCar> where TCar : IGenericCar { ... }更多推荐
C# 泛型“where 约束"带有“任何泛型类型"定义?
发布评论