Created
April 6, 2016 18:57
-
-
Save Clancey/6117ca314a6dd5e32a486e76378d144f to your computer and use it in GitHub Desktop.
Resource Loader
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.IO; | |
using System.Linq; | |
using System.Reflection; | |
public static class ResourceLoader | |
{ | |
public static Stream GetEmbeddedResourceStream(string resourceFileName) | |
{ | |
var assembly = typeof(ResourceLoader).GetTypeInfo().Assembly; | |
return GetEmbeddedResourceStream(assembly, resourceFileName); | |
} | |
public static Stream GetEmbeddedResourceStream(Assembly assembly, string resourceFileName) | |
{ | |
var resourceNames = assembly.GetManifestResourceNames(); | |
var resourcePaths = resourceNames | |
.Where(x => x.EndsWith(resourceFileName, StringComparison.CurrentCultureIgnoreCase)) | |
.ToArray(); | |
if (!resourcePaths.Any()) { | |
throw new Exception(string.Format("Resource ending with {0} not found.", resourceFileName)); | |
} | |
if (resourcePaths.Count() > 1) { | |
throw new Exception(string.Format("Multiple resources ending with {0} found: {1}{2}", resourceFileName, Environment.NewLine, string.Join(Environment.NewLine, resourcePaths))); | |
} | |
return assembly.GetManifestResourceStream(resourcePaths.Single()); | |
} | |
public static string GetEmbeddedResourceString(string resourceFileName) | |
{ | |
var assembly = typeof(ResourceLoader).GetTypeInfo().Assembly; | |
return GetEmbeddedResourceString(assembly, resourceFileName); | |
} | |
public static string GetEmbeddedResourceString(Assembly assembly, string resourceFileName) | |
{ | |
var stream = GetEmbeddedResourceStream(assembly, resourceFileName); | |
using (var streamReader = new StreamReader(stream)) { | |
return streamReader.ReadToEnd(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment