如何限制多个泛型类型?

21

这里有一个简单的语法问题(我希望如此),我知道如何使用where子句限制一个泛型类型,但如何限制两个泛型类型?

也许最简单的方法是写下我对语法的最佳猜测。

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

这个让我出现了一个错误。有人知道正确的语法是什么吗?

2个回答

44

使用两个'where'关键字,比如我有这样的声明:

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) { }
}

你只是重复了where。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接