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 が必要です。

これを解決する方法がわかりません。私が試した1つの代替手段は次のとおりです。

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

    }

つまり、コンストラクターに渡しますが、強い型指定のプロパティはもうありません。

グレッグ

4

1 に答える 1

8

コンストラクタ引数もジェネリック型を取るようにするだけです

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

}
于 2013-01-04T02:38:24.813 に答える