有没有办法实现约束类型参数,其中 T 来自基类,或者 T 是包含“基类”的列表?
看起来像这样的东西:
public class SomeClass<T> where T : MyBaseClass, IList<MyBaseClass>
有没有办法实现约束类型参数,其中 T 来自基类,或者 T 是包含“基类”的列表?
看起来像这样的东西:
public class SomeClass<T> where T : MyBaseClass, IList<MyBaseClass>
不,您不能创建通用约束来像OR
.
并且只是指出这种约束是无用的:您将无法使用定义的方法BaseClass
或这些方法IList
(因为T
可能是第一个或第二个)。
不,但您可以重载采用一种或另一种的方法:
public class SomeClass<T> where T : MyBaseClass
{
public void Process(T instance)
{
}
public void Process(IList<T> list)
{
}
}
你为什么不在 BaseClass 上实现一个接口并做。
public class SomeClass<T> where T : class, IBaseInterface
这也保证了孩子们正在执行您想要公开的适当合同。