带有构造函数的通用基类

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;

    }

换言之,我将其传递给构造函数,但现在我不再拥有该属性的强类型特性。
格雷格
1个回答

8
只需将构造函数参数也采用通用类型即可。
public DataServiceBase(T entityManager) {
    this._entityManager = entityManager;

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接