【发布时间】:2013-01-13 16:33:02
【问题描述】:
我有一个名为Man 的接口。
在这个接口中,我有方法getList(),它返回一个类型为 T 的列表(依赖于实现接口的类)。
我有 3 个实现 Man 的类:small、normal 和 big。
每个类都有getList() 方法,它返回small 列表或normal 列表或big 列表。
interface Man<T>{
List<T>getList();
}
class small : Man<small>{
List<small> getList(){
return new List<small>();
}
}
class normal : Man<normal>{
List<normal> getList(){
return new List<normal>();
}
}
class big : Man<big>{
List<big> getList(){
return new List<big>();
}
}
现在我有了类:Home,其中包含一个参数 bed,它是 Man 的一个实例。
Bed 可以有多种类型:small、normal、big。如何声明bed的类型参数?
class Home{
Man bed<> // what i must insert between '<' and '>'??
}
【问题讨论】:
-
Do
small、normal和big共享一个公共基类,如果是这样,我建议在你的类型定义中添加一个 where clause,如果没有,你可以想考虑给他们一个基类,这样你就可以了,因为你似乎把你的类型限制在一个大小上。 -
我试图做:class Home
where T: small,normal,big{ Man bed } 但我有错误:( -
@EnnioPastore 你需要指定一个通用的基类,你不能列出你想限制它的类,你应该对接口和
Home类都有约束,即: public interface IManwhere T : Size{ } public class Home where T : Size { } public abstract class Size { // size 对象继承 this } -
@EnnioPastore 接口也可以用在 where 子句中,类型约束需要是类继承或实现的共同点。