2013-01-04 21 views
5

ho una classe generica che assomiglia a questo:generico classe base con il costruttore

public class DataServiceBase<T> : Screen where T : EntityManager, new(){ 

    private T _entityManager; 

    public T EntityManager { 
     get { 
      if (_entityManager == null) 
      { 
       _entityManager = new T(); 
      } 
      return _entityManager; 
     } 
    } 

In pratica tutto quello che sto cercando di fare è creare un EntityManager di se non esiste. Questo funziona davvero bene. Tuttavia, ho bisogno di modificare questo come T non ha più un costruttore parametrico. E quindi non posso assolutamente usare questa metodologia.

Tuttavia, è necessario che EntityManager sia stato immesso correttamente nel livello derivato del DataService in quanto diversi gestori di entità gestiscono entità diverse.

Non so come risolvere questo problema. Un'alternativa che ho provato è:

public DataServiceBase(EntityManager entityManager) { 
     this._entityManager = entityManager; 

    } 

In altre parole, lo passo al costruttore, ma ora non ho più la proprietà forte digitato.

Greg

risposta

8

Basta fare l'argomento del costruttore prendere il tipo generico anche

public DataServiceBase(T entityManager) { 
    this._entityManager = entityManager; 

} 
Problemi correlati