Beispiel #1
0
        /// <summary>
        /// Gets the resource manager.
        /// </summary>
        /// <param name="source">The source.</param>
        private ResourceManager GetResourceManager(string source)
        {
            return(_resourceFileCache.GetFromCacheOrFetch(source, () =>
            {
                try
                {
#if NETFX_CORE && !WIN81
                    var resourceLoader = new ResourceManager(source);
#elif WIN81
                    var resourceLoader = ResourceManager.GetForCurrentView(source);
#else
                    var splittedString = source.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

                    var assemblyName = splittedString[1].Trim();
                    var containingAssemblyName = string.Format("{0},", assemblyName);
                    var assembly = AssemblyHelper.GetLoadedAssemblies().FirstOrDefault(x => x.FullName.Contains(containingAssemblyName));
                    if (assembly == null)
                    {
                        return null;
                    }

                    string resourceFile = splittedString[0];
                    var resourceLoader = new ResourceManager(resourceFile, assembly);
#endif

                    return resourceLoader;
                }
                catch (Exception ex)
                {
                    Log.Warning(ex, "Failed to get the resource manager for source '{0}'", source);
                    return null;
                }
            }));
        }
Beispiel #2
0
        /// <summary>
        /// Gets the resource manager.
        /// </summary>
        /// <param name="source">The source.</param>
        private ResourceManager GetResourceManager(string source)
        {
            Func <ResourceManager> retrievalFunc = () =>
            {
                try
                {
#if NETFX_CORE && WIN80
                    var resourceLoader = new ResourceManager(source);
#elif NETFX_CORE
                    var resourceLoader = ResourceManager.GetForCurrentView(source);
#else
                    var splittedString = source.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

                    var assemblyName           = splittedString[1].Trim();
                    var containingAssemblyName = string.Format("{0},", assemblyName);

                    var loadedAssemblies = AssemblyHelper.GetLoadedAssemblies();

                    // Invert so design-time will always pick the latest version
                    loadedAssemblies.Reverse();

                    var assembly = loadedAssemblies.FirstOrDefault(x => x.FullName.StartsWith(containingAssemblyName));
                    if (assembly == null)
                    {
                        return(null);
                    }

                    string resourceFile   = splittedString[0];
                    var    resourceLoader = new ResourceManager(resourceFile, assembly);
#endif

                    return(resourceLoader);
                }
                catch (Exception ex)
                {
                    Log.Warning(ex, "Failed to get the resource manager for source '{0}'", source);
                    return(null);
                }
            };

            if (CacheResults)
            {
                return(_resourceFileCache.GetFromCacheOrFetch(source, retrievalFunc));
            }

            return(retrievalFunc());
        }