Skip to content

Instantly share code, notes, and snippets.

@Clancey
Created April 6, 2016 18:57
Show Gist options
  • Save Clancey/6117ca314a6dd5e32a486e76378d144f to your computer and use it in GitHub Desktop.
Save Clancey/6117ca314a6dd5e32a486e76378d144f to your computer and use it in GitHub Desktop.
Resource Loader
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