2011-02-26 49 views
0

我有以下代碼:可以通過仿製藥,當你有多個約束

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(); 
    } 

有反正我可以添加其他contraint「在哪裏T」,使科技支撐某個接口以及(的IFoo例如)除了DomainBase

回答

4

嘗試

where T : DomainBase, IFoo 
+0

dang,太快:) – 2011-02-26 14:37:13

0

當然,只是將它加入DomainBase用逗號後:

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

當然可以。只需像這樣調整代碼

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

您的約束受到.net繼承模型的限制。所以你只能有一個類作爲約束,但可以有任意數量的接口。其他人提供了很好的代碼示例。