2009-10-21 17 views

risposta

28

where TEntity : ... applica i vincoli al parametro generico TEntity. In questo caso, i vincoli sono:

classe: L'argomento TEntity deve essere un tipo di riferimento
IEntity: L'argomento deve essere o implementare l'interfaccia IEntity
nuovo(): L'argomento deve avere un costruttore senza parametri pubblica

Da http://msdn.microsoft.com/en-us/library/d5x73970.aspx

+0

Se potessi aggiungere del codice che mostra come qualcuno potrebbe usare BaseEntityManager come una classe base che sarebbe fantastica :) – niico

0

Dove si trova un tipo di vincolo generico. Quelle righe dicono che il tipo TEntity deve essere un tipo di riferimento rispetto a un tipo di valore, deve implementare l'interfaccia IEntity e deve avere un costruttore che non accetta parametri.

http://msdn.microsoft.com/en-us/library/bb384067.aspx

4

Il where parola chiave dopo la dichiarazione della classe limitare il tipo generico TEntity potrebbe essere. In questo caso TEntitydeve essere una classe (che significa che non può essere un tipo di valore come int o DateTime), e deve implementare l'interfaccia IEntity. Il vincolo new() indica che i metodi all'interno di questa classe hanno la possibilità di chiamare il costruttore predefinito della classe generica rappresentata da TEntity (ad esempio new TEntity())

-1

Qual è la domanda?

Lasciami prendere a tiro a ciò che penso sia la domanda. Il vincolo garantisce che è possibile solo sottoclasse BaseEntityManager con un parametro generico che è un tipo di riferimento che implementa IEntity e che contiene un costruttore senza parametri.

E.X.

public class Product : IEntity { 
    public Product() {} 
} 

public class Wrong { 
    public Wrong() {} 
} 

public class WrongAgain : IEntity { 
    private Wrong() {} 
} 


// compiles 
public ProductManager : BaseEntityManager<Product> {} 


// Error - not implementing IEntity 
public WrongManager : BaseEntityManager<Wrong> {} 


/Error - no public parameterless constructor 
public WrongAgainManager : BaseEntityManager<WrongAgain> {} 

vedere link text

+0

"Qualcuno potrebbe aiutarmi con la linea ...?" questa è la domanda È ovvio che cosa sta chiedendo. –

Problemi correlati