我創建了一個自定義的資源提供程序,它從我們的數據庫返回字符串以用於任何情況。ResourceProviderFactory定期刷新
問題是我還沒有找到一種方法來「破壞」這些項目上的緩存並從數據庫中重新加載它們。理想情況下,我會每隔x分鐘或手動更新緩存並重新加載時執行此操作。
從技術上講,這很容易。我將所有內容都存儲在散列表中,以便在需要時加載並重新加載。但是,由於ResourceProviderFactory處理每個資源類的加載,我不知道如何枚舉它創建的類。
代碼概述:
public class ResourceProvider : IResourceProvider
{
private Dictionary<string, Dictionary<string, object>> _resourceCache
= new Dictionary<string, Dictionary<string, object>>();
private string _virtualPath;
private string _className;
public ResourceProvider(string virtualPath, string className)
{
_virtualPath = virtualPath;
_className = className;
}
public object GetObject(string resourceKey, CultureInfo culture)
{
...
}
}
public class ResourceProviderFactory :System.Web.Compilation.ResourceProviderFactory
{
public override IResourceProvider CreateGlobalResourceProvider(string classKey)
{
return new Cannla.Business.Resource.ResourceProvider(string.Empty, classKey);
}
...
...
}
我打算做的是增加一個參考每次CreateGlobalResourceProvider被調用(如新對象添加到集合,然後枚舉和核彈內部的一切對象當我需要時),但我不確定這是否會對ResourceProviderFactory做一些奇怪的事情。
是否有任何ResourceProviderFactory IEnumerable方法或東西會給我所有這些對象以一種簡單的方式之前,我去建設所有這些代碼?
這不是時間問題,我正在尋找如何獲得每個創建的對象的引用。不過謝謝你的想法。 – mjallday 2009-10-12 09:27:48