Reputation: 37885
I have a generic class that looks like this:
public class DataServiceBase<T> : Screen where T : EntityManager, new (){
private T _entityManager;
public T EntityManager {
get {
if (_entityManager == null)
{
_entityManager = new T();
}
return _entityManager;
}
}
Basically all I am trying to do is create an EntityManager of if it doesn't exist. This actually works fine. However, I need to modify this as T no longer has a parameterizerless constructor. And so I can't use this methodology at all.
But I do need the EntityManager strongly typed at the derived level of the DataService as different entity managers handled different entities.
I am not sure how to resolve this. One alternative I have tried is:
public DataServiceBase(EntityManager entityManager) {
this._entityManager = entityManager;
}
In other words, I pass it into the constructor, but now I no longer have the property strong typed.
Greg
Upvotes: 5
Views: 6318
Reputation: 10789
Just make the constructor argument take the generic type also
public DataServiceBase(T entityManager) {
this._entityManager = entityManager;
}
Upvotes: 8