2008-12-30 7 views
19

Voici une question de syntaxe simple (j'espère), je sais comment contraindre un type générique en utilisant la clause where, mais comment contraindre deux types génériques?Comment contraindre plusieurs types génériques?

Peut-être le plus simple est d'écrire ce que ma meilleure estimation quant à la syntaxe était.

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

Cela me donne une erreur. Quelqu'un sait quelle est la syntaxe appropriée?

Répondre

41

Utilisez deux 'où' des mots-clés, par exemple, j'ai une déclaration comme ceci:

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

Cela devrait fonctionner:

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

-vous répéter la où.

Questions connexes