/// <summary> /// Loads resources from the storage and creates a list of <see cref="Resource"/> instances that should be applied to the target. /// </summary> /// <remarks> /// This feature is not currently supported on version 1.0 of the .NET platform. /// </remarks> /// <param name="target">Target to get a list of resources for.</param> /// <param name="messageSource"><see cref="IMessageSource"/> instance to retrieve resources from.</param> /// <param name="culture">Resource locale.</param> /// <returns>A list of resources to apply.</returns> protected override IList LoadResources(object target, IMessageSource messageSource, CultureInfo culture) { #if !NET_1_0 IList resources; resources = new ArrayList(); if (messageSource is ResourceSetMessageSource) { for (int i = 0; i < ((ResourceSetMessageSource)messageSource).ResourceManagers.Count; i++) { ResourceManager rm = ((ResourceSetMessageSource)messageSource).ResourceManagers[i] as ResourceManager; ResourceSet invariantResources = null; try { invariantResources = rm.GetResourceSet(CultureInfo.InvariantCulture, true, true); } catch (MissingManifestResourceException mmrex) { // ignore but log missing ResourceSet log.Debug("No ResourceSet available for invariant culture", mmrex); } if (invariantResources != null) { foreach (DictionaryEntry resource in invariantResources) { string resourceName = (string)resource.Key; if (resourceName.StartsWith("$this") && !ignoreList.Contains(resourceName)) { // redirect resource resolution if necessary object resourceValue = rm.GetObject(resourceName, culture); if (resourceValue is String && ((String)resourceValue).StartsWith("$messageSource")) { resourceValue = messageSource.GetResourceObject(((String)resourceValue).Substring(15), culture); } resources.Add(new Resource(Expression.ParsePrimary(resourceName.Substring(6)), resourceValue)); } } } } } return(resources); #else throw new NotSupportedException("Operation not supported in .NET 1.0 Release."); #endif }
/// <summary> /// Loads resources from the storage and creates a list of <see cref="Resource"/> instances that should be applied to the target. /// </summary> /// <remarks> /// This feature is not currently supported on version 1.0 of the .NET platform. /// </remarks> /// <param name="target">Target to get a list of resources for.</param> /// <param name="messageSource"><see cref="IMessageSource"/> instance to retrieve resources from.</param> /// <param name="culture">Resource locale.</param> /// <returns>A list of resources to apply.</returns> protected override IList<Resource> LoadResources(object target, IMessageSource messageSource, CultureInfo culture) { IList<Resource> resources = new List<Resource>(); if (messageSource is ResourceSetMessageSource) { for (int i = 0; i < ((ResourceSetMessageSource) messageSource).ResourceManagers.Count; i++) { ResourceManager rm = ((ResourceSetMessageSource) messageSource).ResourceManagers[i] as ResourceManager; ResourceSet invariantResources = null; try { invariantResources = rm.GetResourceSet(CultureInfo.InvariantCulture, true, true); } catch (MissingManifestResourceException mmrex) { // ignore but log missing ResourceSet log.Debug("No ResourceSet available for invariant culture", mmrex); } if (invariantResources != null) { foreach (DictionaryEntry resource in invariantResources) { string resourceName = (string)resource.Key; if (resourceName.StartsWith("$this") && !ignoreList.Contains(resourceName)) { // redirect resource resolution if necessary object resourceValue = rm.GetObject(resourceName, culture); if (resourceValue is String && ((String)resourceValue).StartsWith("$messageSource")) { resourceValue = messageSource.GetResourceObject(((String)resourceValue).Substring(15), culture); } resources.Add(new Resource(Expression.ParsePrimary(resourceName.Substring(6)), resourceValue)); } } } } } return resources; }
/// <summary> /// Returns resource object for the specified resource name. /// </summary> /// <param name="name">Resource name.</param> /// <returns>Resource object.</returns> public object GetResourceObject(string name) { return(messageSource.GetResourceObject(name, UserCulture)); }