Catel.Services.LanguageService.GetResourceManager C# (CSharp) Method

GetResourceManager() private method

Gets the resource manager.
private GetResourceManager ( string source ) : Windows.ApplicationModel.Resources.ResourceLoader
source string The source.
return Windows.ApplicationModel.Resources.ResourceLoader
        private ResourceManager GetResourceManager(string source)
        {
            Func<ResourceManager> retrievalFunc = () =>
            {
                try
                {
#if NETFX_CORE
                    var resourceContainer = GetResourceContainer(source);
                    var resourceLoader = ResourceManager.GetForViewIndependentUse(resourceContainer);
#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();
        }