带构造函数的通用基类

Gre*_*Gum 5 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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

基本上我所要做的就是创建一个EntityManager,如果它不存在的话.这实际上很好.但是,我需要修改它,因为T不再具有无参数化构造函数.所以我根本不能使用这种方法.

但我确实需要在DataService的派生级别强类型化EntityManager,因为不同的实体管理器处理不同的实体.

我不知道如何解决这个问题.我尝试过的另一种选择是:

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

    }
Run Code Online (Sandbox Code Playgroud)

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

格雷格

aqw*_*ert 8

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

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

}
Run Code Online (Sandbox Code Playgroud)