Pregunta

Aquí hay una pregunta de sintaxis simple (espero), sé cómo restringir un tipo genérico utilizando la cláusula where, pero ¿cómo restringir dos tipos genéricos?

Quizás la forma más fácil es anotar cuál fue mi mejor conjetura en cuanto a la sintaxis.

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

Esto me da un error. ¿Alguien sabe cuál es la sintaxis correcta?

¿Fue útil?

Solución

Use dos palabras clave 'donde', por ejemplo, tengo una declaración como esta:

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

Otros consejos

Esto debería funcionar:

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

simplemente repites el dónde.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top