2008-12-30 52 views
19

這裏有一個簡單的語法問題(我希望),我知道如何使用where子句約束一個泛型,但是如何約束兩個泛型?如何約束多個泛型?

也許最簡單的方法是寫下我對語法的最佳猜測。

public class GenericDaoGetByIdTests<TDao, TComponent> : BaseDaoTests 
    where TDao : IDao<TComponent>, TComponent : EDC2ORMComponent { 
    public void GetByIdTest(int id) { } 
} 

這給了我一個錯誤。任何人都知道正確的語法是什麼?

回答

41

使用兩節 '其中' 關鍵詞,比如我有一個像這樣的聲明:

public interface IParentNodeT<TChild, TSelf> 
    where TChild : IChildNodeT<TSelf, TChild>, INodeT<TChild> 
    where TSelf : IParentNodeT<TChild, TSelf> 
{ 
    TChild childRoot { get; set; } 
} 
5

這應該工作:

public class GenericDaoGetByIdTests<TDao, TComponent> : BaseDaoTests 
    where TDao : IDao<TComponent> where TComponent : EDC2ORMComponent { 
    public void GetByIdTest(int id) { } 
} 

您重複剛纔的地方。