Funcとデリゲートについて何か読んだことがありますが、それらはメソッドをパラメーターとして渡すのに役立ちます。今、私はキャッシングサービスを持っています、そしてそれはこの宣言を持っています:
public static void AddToCache<T>(T model, double millisecs, string cacheId) where T : class
public static T GetFromCache<T>(string cacheId) where T : class
したがって、データをキャッシュしたい場所で、データがキャッシュに存在するかどうかを確認し(GetFromCacheを使用)、存在しない場合は、どこかからデータを取得して、キャッシュに追加します(AddToCacheを使用)。
ここで、AddToCacheメソッドをパラメーターで拡張したいと思います。これは、データを取得するために呼び出すクラス+メソッドです。宣言は次のようになります。
public static void AddToCache<T>(T model, double millisecs, string cacheId, Func/Delegate methode) where T : class
次に、このメソッドは、キャッシュにデータがあるかどうかをチェックし、ない場合は、提供されたメソッドを介してデータ自体を取得できます。
次に、呼び出しコードで私は言うことができます:
AddToCache<Person>(p, 10000, "Person", new PersonService().GetPersonById(1));
AddToCache<Advert>(a, 100000, "Advert", new AdvertService().GetAdverts(3));
私が達成したいのは、「キャッシュが空の場合、データを取得してキャッシュに追加する」ロジックが1つの場所にのみ配置されることです。
私はこれが理にかなっていることを願っています:)
ちなみに、質問は次のとおりです。これは可能ですか?