带构造函数的通用基类

时间:2013-01-04 02:36:11

标签: c# generics

我有一个通用类,如下所示:

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;

    }

换句话说,我将它传递给构造函数,但现在我不再具有强类型的属性。

格雷格

1 个答案:

答案 0 :(得分:8)

只需使构造函数参数也采用泛型类型

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

}