2008-12-30 72 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) { } 
} 

您重复刚才的地方。