मेरे पास पोस्टशर्प का उपयोग करके लागू एक सरल कैश विशेषता है। जब मैं कैश नीति सेट करता हूं तो मैं नीचे जैसे अपडेट कॉलबैक सेट करने में सक्षम होना चाहता हूं।मैं किसी अन्य वर्ग से कैशइटेम पॉलिसी पर अपडेट कैलबैक कैसे कार्यान्वित कर सकता हूं?
private static CacheItemPolicy GetCachePolicy(CacheType type, int expiry)
{
var policy = new CacheItemPolicy();
switch (type)
{
case (CacheType.Absolute):
policy.AbsoluteExpiration = DateTimeOffset.Now.AddSeconds(expiry);
policy.UpdateCallback = new CacheEntryUpdateCallback(UpdateHandler);
break;
case (CacheType.Sliding):
policy.SlidingExpiration = new TimeSpan(0, 0, 0, expiry);
break;
}
return policy;
}
यह ठीक है अगर मैं ऐसा करना चाहते हैं:
private static void UpdateHandler(CacheEntryUpdateArguments arguments)
{
throw new NotImplementedException();
}
हालांकि, मैं गतिशील में एक प्रतिनिधि/विधि/विधि नाम और मानकों में गुजरती हैं और कि निष्पादित करने में सक्षम होना चाहता हूँ। अतः मैं की तरह कुछ देखने की उम्मीद कर सकता है (जाहिर है वाक्य रचना गलत है):
private static CacheItemPolicy GetCachePolicy(CacheType type, int expiry Func<?,?> method)
{
var policy = new CacheItemPolicy();
switch (type)
{
case (CacheType.Absolute):
policy.AbsoluteExpiration = DateTimeOffset.Now.AddSeconds(expiry);
policy.UpdateCallback = new CacheEntryUpdateCallback(method);
break;
case (CacheType.Sliding):
policy.SlidingExpiration = new TimeSpan(0, 0, 0, expiry);
break;
}
return policy;
}
** * ** * ** * *अद्यतन* * * * ****
मुझे यह काम मिल गया। सबसे सुरुचिपूर्ण विधि नहीं है, यह काम करता है।
मेरे पहलू कोड इस प्रकार है:
private static void UpdateHandler(CacheEntryUpdateArguments arguments)
{
CacheObject cacheObject = (CacheObject)arguments.Source.Get(arguments.Key);
cacheObject.Context.Proceed();
cacheObject.CacheValue = cacheObject.Context.ReturnValue;
CacheItem updatedItem = new CacheItem(arguments.Key, cacheObject);
arguments.UpdatedCacheItem = updatedItem;
}
आप प्रश्न में अपने पहलू कोड शामिल कर सकता है? मैं समझ नहीं पा रहा हूं कि आप क्या हासिल करने की कोशिश कर रहे हैं। GetCachePolicy विधि कहां से बुलाया जाता है और कहां पहलू लागू किया जाता है? –