2013-01-04 59 views
5

我有一個泛型類,看起來像這樣:通用基類構造函數

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

    private T _entityManager; 

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

基本上所有我想要做的就是創建一個EntityManager的,如果它不存在。這實際上工作正常。但是,我需要修改它,因爲T不再有無參數的構造函數。所以我根本無法使用這種方法。

但我確實需要在DataService的派生級別強類型化的EntityManager,因爲不同的實體管理器處理不同的實體。

我不知道如何解決這個問題。一種替代方法我都試過是:

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

    } 

換句話說,我將它傳遞到構造函數中,但現在我不再有屬性強類型。

格雷格

回答

8

只是要構造函數參數取泛型類型也

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

}