2

私はこのようなものをキャッシュするためのシンプルなインターフェースを持っています

public interface ICacheService
{

        T Get<T>(string cacheId, Func<T> getItemCallback) where T : class;
}

これは単純なコールバック関数で機能しますが、私の場合はもう少し複雑なものを追加する必要があります。匿名タイプだと思います...

コントローラーで、クエリを実行するサービスを注入しています。これは次のようになります。

this.queryContainer.Get<ObjectQuery>().Execute(new ObjectParameters(id));

しかしもちろん、これはタイプFuncではないので、キャッシュサービスを使おうとすると、コンパイラは文句を言います。

キャッシュを機能させるには、どのような種類のインターフェイスが必要ですか?理想的にはこれを実行したい:

this.cachingService.Get<ObjectResult>(id, this.queryContainer.Get<ObjectQuery>().Execute(new ObjectParameters(id)));

それも可能ですか?

どんな助けでも大歓迎です!

どうもありがとう

4

2 に答える 2

2

として表現する必要があるだけFunc<T>ですか?これを試して:

this.cachingService.Get<ObjectResult>(id, ()=> this.queryContainer.Get<ObjectQuery>().Execute(new ObjectParameters(id)));
于 2012-07-25T17:18:54.453 に答える
1

ラムダ関数を使用できます。

() => this.queryContainer...

値を返すときに引数を持たない関数でコードをラップします。したがって、Func のコントラクトを満たします。

于 2012-07-25T17:20:56.623 に答える