Como restringir vários tipos genéricos?
Pergunta
Aqui está uma pergunta simples sintaxe (espero), eu sei como restringir um tipo genérico usando a cláusula onde, mas como restringir dois tipos genéricos?
Talvez a maneira mais fácil é escrever o que meu melhor palpite quanto à sintaxe foi.
public class GenericDaoGetByIdTests<TDao, TComponent> : BaseDaoTests
where TDao : IDao<TComponent>, TComponent : EDC2ORMComponent {
public void GetByIdTest(int id) { }
}
Isto dá-me um erro. Alguém sabe o que a sintaxe correcta é?
Solução
Use dois 'onde' palavras-chave, por exemplo, eu tenho uma declaração como esta:
public interface IParentNodeT<TChild, TSelf>
where TChild : IChildNodeT<TSelf, TChild>, INodeT<TChild>
where TSelf : IParentNodeT<TChild, TSelf>
{
TChild childRoot { get; set; }
}
Outras dicas
Isso deve funcionar:
public class GenericDaoGetByIdTests<TDao, TComponent> : BaseDaoTests
where TDao : IDao<TComponent> where TComponent : EDC2ORMComponent {
public void GetByIdTest(int id) { }
}
que você acabou de repetir o onde.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow