Question

Here's a simple syntax question (I hope), I know how to constrain one generic type using the where clause, but how to constrain two generic types?

Maybe the easiest way is to write down what my best guess as to the syntax was.

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

This gives me an error. Anyone know what the proper syntax is?

Was it helpful?

Solution

Use two 'where' keywords, for example I have a declaration like this:

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

OTHER TIPS

This should work:

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

you just repeat the where.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top