┌───────────────────────┐ │ResourceProviderFactory│ ├───────────────────────┤ └───────────────────────┘ | | ┌────────────────┐ │ResourceProvider│ ├────────────────┤ └────────────────┘ | | ┌─────────────────────────────────────────┐ ┌───────────┐ ┌───────────┐ ┌───────────────┐ │Manages access to an internal dictionary │ │IDisposable│ │IEnumerable│ │ResourceManager│ ├─────────────────────────────────────────┤ ├───────────┤ ├───────────┤ ├───────────────┤---│ │ └───────────┘ └───────────┘ └───────────────┘ └─────────────────────────────────────────┘ ┌──────────────────────────────────────────────────────────────────────────────────────────────┐ │ResourceSet │ ├──────────────────────────────────────────────────────────────────────────────────────────────┤ │protected IResourceReader Reader; │ │protected Hashtable Table = new Hashtable(); │ │ │ ┌─────────────────────────────────────────┐ ┌──────────────────────────────────────┐ │protected ResourceSet() {...} │ │Stores one particular culture's resources│ │IResourceReader │ │public ResourceSet(string fileName){...} │ ├─────────────────────────────────────────┤ ┌───────────────────────┐ ├──────────────────────────────────────┤ │public ResourceSet(Stream stream) {...} │ │ignoring all other cultures, │ │ResourceFallbackManager│ │void Close(); │ │protected virtual void ReadResources() {...} │---│including fallback rules │ ├───────────────────────┤ │IDictionaryEnumerator GetEnumerator();│ │public virtual IDictionaryEnumerator GetEnumerator() { return ... this.Table.GetEnumerator();}│ │(ie, one each for 'en-EN', 'en-US', 'en')│ └───────────────────────┘ └──────────────────────────────────────┘ │IEnumerator IEnumerable.GetEnumerator() {return ... this.Table.GetEnumerator();} │ │ │ │public virtual string GetString(string name) { return this.GetObjectInternal(name);} │ └─────────────────────────────────────────┘ │public virtual object GetObject(string name){return this.GetObjectInternal(name);} │ │private object GetObjectInternal(string name) {...return hashtable[(object) name];} │ │public virtual Type GetDefaultReader() {return typeof (ResourceReader);} │ │public virtual Type GetDefaultWriter() {return typeof (ResourceWriter);} │ └──────────────────────────────────────────────────────────────────────────────────────────────┘ ┌──────────────┐ ┌───────────────────────────────────┐ │ResourceReader│ │Enumerates key\value resources in a│ ├──────────────┤---├───────────────────────────────────┤ └──────────────┘ │ │ └───────────────────────────────────┘