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