if (this._resourceCache == null) this._resourceCache = new ListDictionary();
IDictionary Resources = this._resourceCache[cultureName] as IDictionary; if (Resources == null) { // *** DEPENDENCY HERE (#1): Using DbResourceDataManager to retrieve resources
// *** Use datamanager to retrieve the resource keys from the database DbResourceDataManager Data = new DbResourceDataManager(); Resources = Data.GetResourceSet(cultureName as string, this._ResourceSetName); this._resourceCache[cultureName] = Resources; }
return Resources; }
public void ClearResourceCache() { this._resourceCache.Clear(); }
object value = null; if (Resources == null) value = null; else value = Resources[ResourceKey];
// *** If we"re at a specific culture (en-Us) and there"s no value fall back // *** to the generic culture (en) if (value == null && CultureName.Length > 3) { // *** try again with the 2 letter locale return GetObjectInternal(ResourceKey,CultureName.Substring(0,2) ); }
// *** If the value is still null get the invariant value if (value == null) { Resources = this.GetResourceCache(""); if (Resources == null) value = null; else value = Resources[ResourceKey]; }
// *** If the value is still null and we"re at the invariant culture // *** let"s add a marker that the value is missing // *** this also allows the pre-compiler to work and never return null if (value == null && string.IsNullOrEmpty(CultureName)) { // *** No entry there value = "";
// *** DEPENDENCY HERE (#2): using DbResourceConfiguration and DbResourceDataManager to optionally // add missing resource keys
// *** Add a key in the repository at least for the Invariant culture // *** Something"s referencing but nothing"s there if (DbResourceConfiguration.Current.AddMissingResources) new DbResourceDataManager().AddResource(ResourceKey, value.ToString(), "", this._ResourceSetName);
}
return value; }
3.Reader类 复制代码 代码如下: public class DbSimpleResourceReader : IResourceReader { private IDictionary _resources;