メソッドに新しいパラメータを追加できず、DataQueryのロジックを変更できない状況にあります。このため、これと同様の構造でメソッドの内容を変更することしかできません、およびT.linqのwhere節を傍受してオーバーライドします
IEnumerable<T> Get<T>(DataQuery<T> query) {
var collection = repo;
return query.Apply(repo).ToList();
}
の性質は、私の問題は、私は私のチームに割り当てられたTsのを取得するためのサポートを追加したいということですか、私の会社またはちょうど私が、私は「私のいずれかのコンテキストへのアクセスを持っていません"をコールポイントから取得します。これらは、メソッドのUserContextで使用できます。
DataQuery<T>.Apply()
は、T.caseId <= 4
のようなTsプロパティをクエリでき、ケース1〜4のリストを返します。 source.Where(t => t.caseId <= 4)
私の考えに翻訳されているが.Where(t => t.IsMineQuery == true)
または.Where(t => t.IsMyTeamQuery == true)
に呼び出しインターセプト
bool IsMineQuery
bool IsMyTeamQuery
bool IsMyCompanyQuery
、その後をTと.Where(t => t.UserId == UserContext.UserId)
または.Where(t => UserContext.TeamIds.Contains(t.TeamId))
にそれらを書き換えるために、次のフィールドを追加することですが、私はどのようにの見当がつかない呼び出しを傍受する。
どうすればよいですか?
私はあなたの質問を完全に理解していないかもしれませんが、 'isMineQuery {get UserId == UserContext.UserId}' 'が十分ですか? – Heinzi
@Heinziいいえ、 'UserContext'は' IsMyQuery'ゲッターの中で利用できません。 – dasblinkenlight
'DataQuery'とは何ですか?あなたはそれを支配していますか?どのように構築し、クエリを行うのですか? –