¿Cómo restringir múltiples tipos genéricos?
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?
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