/// <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; } })); }
/// <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()); }