Come vincolare più tipi generici?
Domanda
Ecco una semplice domanda di sintassi (spero), so come vincolare un tipo generico usando la clausola where, ma come vincolare due tipi generici?
Forse il modo più semplice è scrivere quale fosse la mia ipotesi migliore sulla sintassi.
public class GenericDaoGetByIdTests<TDao, TComponent> : BaseDaoTests
where TDao : IDao<TComponent>, TComponent : EDC2ORMComponent {
public void GetByIdTest(int id) { }
}
Questo mi dà un errore. Qualcuno sa qual è la sintassi corretta?
Soluzione
Usa due parole chiave "where", ad esempio ho una dichiarazione come questa:
public interface IParentNodeT<TChild, TSelf>
where TChild : IChildNodeT<TSelf, TChild>, INodeT<TChild>
where TSelf : IParentNodeT<TChild, TSelf>
{
TChild childRoot { get; set; }
}
Altri suggerimenti
Questo dovrebbe funzionare:
public class GenericDaoGetByIdTests<TDao, TComponent> : BaseDaoTests
where TDao : IDao<TComponent> where TComponent : EDC2ORMComponent {
public void GetByIdTest(int id) { }
}
devi solo ripetere dove.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow