对象的类型参数和对象列表的约束

时间:2013-09-09 18:46:02

标签: c# type-constraints

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

看起来像这样:

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

3 个答案:

答案 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

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