/// <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;
        }
Esempio n. 3
0
 /// <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));
 }