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 é?

Foi útil?

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
scroll top