0

多くのプロジェクト (WPF コントロール ライブラリ、いくつかのビジネス ロジックなど) を含む vs2010 ソリューションがあります。現在、各ライブラリは、独自のサービス リファレンスを使用して WCF データ サービスに到達しています。WCF データ サービスへのある種の DL となる新しいライブラリを作成しようとしています。テンプレートを使用して作成したいので、すべてのエンティティに同じ関数を作成する必要はありません (~30)。 . まあ、私はどこにも行きません..

次のような単純なインターフェイスを追加することから始めました。

public interface IRepository<T>
{
    IQueryable<T> GetAll();
    T GetSingle(int id);
    IQueryable<T> FindBy(Expression<Func<T, bool>> predicate);
    IQueryable<T> Where(Expression<Func<T, bool>> predicate);
    void Add(T entity);
    void Delete(T entity);
    void Update(T entity);        
}

インターフェイスを実装しようとしていますが、解決方法がわからない問題が発生しました

1) 実装クラスで、照会しているエンティティをコンテキストに伝えるにはどうすればよいですか

public IQueryable<Region> Where(Expression<Func<T, bool>> predicate)
{   
    return _context.(something general).Where(predicate);
}

2) 実体を提供しても

public IQueryable<Region> Where(Expression<Func<T, bool>> predicate)
{   
    return _context.Region.Where(predicate);
}

解決できなかったキャスティングの問題に遭遇しました。

まあ、それはそれについてです。ありがとうございました

4

1 に答える 1

0

私はまったく同じ問題を経験してきました.WCFコントラクトをオープンジェネリック型(ちなみにインターフェイスも)で宣言することはできません。問題は、このフレームワークがいくつかの基本的な優れた OOP 原則に準拠していないため、経験豊富なプログラマーにフラストレーションを引き起こすことです。

この問題の詳細については、msdnの例を参照してください。

于 2012-04-19T14:05:26.350 に答える