我有一个通用类,如下所示:
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;
}
换句话说,我将它传递给构造函数,但现在我不再具有强类型的属性。
格雷格
答案 0 :(得分:8)
只需使构造函数参数也采用泛型类型
public DataServiceBase(T entityManager) {
this._entityManager = entityManager;
}