次のようなジェネリック クラスがあります。
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 が必要です。
これを解決する方法がわかりません。私が試した1つの代替手段は次のとおりです。
public DataServiceBase(EntityManager entityManager) {
this._entityManager = entityManager;
}
つまり、コンストラクターに渡しますが、強い型指定のプロパティはもうありません。
グレッグ