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?

È stato utile?

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