1

有没有办法实现约束类型参数,其中 T 来自基类,或者 T 是包含“基类”的列表?

看起来像这样的东西:

public class SomeClass<T> where T : MyBaseClass, IList<MyBaseClass>
4

3 回答 3

3

不,您不能创建通用约束来像OR.

并且只是指出这种约束是无用的:您将无法使用定义的方法BaseClass或这些方法IList(因为T可能是第一个第二个)。

于 2013-09-09T18:47:58.720 回答
1

不,但您可以重载采用一种或另一种的方法:

public class SomeClass<T> where T : MyBaseClass
{
    public void Process(T instance)
    {
    }

    public void Process(IList<T> list)
    {
    }
}
于 2013-09-09T18:58:51.393 回答
0

你为什么不在 BaseClass 上实现一个接口并做。

public class SomeClass<T> where T : class, IBaseInterface

这也保证了孩子们正在执行您想要公开的适当合同。

于 2013-09-09T18:48:07.647 回答