在传递泛型时你能有多个约束吗?

时间:2011-02-26 14:33:38

标签: c# generics

我有以下代码:

  private int[] GetIds<T>(string nameString) where T : DomainBase
    {
        List<int> ids = new List<int>();
        if (String.IsNullOrEmpty(nameString))
            return ids.ToArray();

         [more code here . . . .]

        return ids.ToArray();
    }

无论如何我可以在“where T”上添加另一个禁令,以使T支持某个接口(例如IFoo)以及DomainBase

4 个答案:

答案 0 :(得分:4)

尝试

where T : DomainBase, IFoo

答案 1 :(得分:1)

您的约束受.net继承模型的限制。所以你只能有一个类作为约束,但任何数量的接口。其他人提供了很好的代码示例。

答案 2 :(得分:0)

当然,只需在DomainBase之后使用逗号添加:

private int[] GetIds<T>(string nameString) where T : DomainBase, IFoo

答案 3 :(得分:0)

当然可以。只需像这样调整代码

private int[] GetIds<T>(string nameString) where T : DomainBase, INEOtherInterface 
{
...
}