Skip to content

Instantly share code, notes, and snippets.

@Fireforge
Last active December 14, 2016 15:35
Show Gist options
  • Save Fireforge/74a1a3dd592420fa550a to your computer and use it in GitHub Desktop.
Save Fireforge/74a1a3dd592420fa550a to your computer and use it in GitHub Desktop.
A class of helpful static functions for accessing files in the Resources folder in various ways
public class AssemblyResources
{
public static bool ResourceExists(string resourceName)
{
return Assembly.GetExecutingAssembly().GetManifestResourceNames().Contains(GetResourcePath(resourceName));
}
public static string GetResourcePath(string resourceName) => $"{Assembly.GetExecutingAssembly().GetName().Name}.Resources.{resourceName}";
public static Stream GetStream(string resourceName)
{
return Assembly.GetExecutingAssembly().GetManifestResourceStream(GetResourcePath(resourceName));
}
public static string ReadFile(string filename)
{
using (StreamReader sr = new StreamReader(GetStream(filename)))
return sr.ReadToEnd();
}
}
public class Resources
{
public static bool ResourceExists(string filename)
{
try
{
var stream = GetStream(filename);
return true;
}
catch
{
return false;
}
}
public static bool ResourceExists(string filename, string assemblyname)
{
try
{
var stream = GetStream(filename, assemblyname);
return true;
}
catch
{
return false;
}
}
public static string GetResourcePath(string filename) => "pack://application:,,,/Resources/" + filename;
public static string GetReferencedAssemblyResourcePath(string filename, string assemblyname) => "pack://application:,,,/" + assemblyname + ";component/Resources/" + filename;
public static Uri GetResourceUri(string filename) => new Uri(GetResourcePath(filename));
public static Uri GetResourceUri(string filename, string assemblyname) => new Uri(GetReferencedAssemblyResourcePath(filename, assemblyname));
public static StreamResourceInfo GetStream(string filename)
{
var uri = GetResourceUri(filename);
return System.Windows.Application.GetResourceStream(uri);
}
public static StreamResourceInfo GetStream(string filename, string assemblyname)
{
var uri = GetResourceUri(filename, assemblyname);
return System.Windows.Application.GetResourceStream(uri);
}
public static string ReadFile(string filename)
{
using (StreamReader sr = new StreamReader(GetStream(filename).Stream))
return sr.ReadToEnd();
}
public static string ReadFile(string filename, string assemblyname)
{
using (StreamReader sr = new StreamReader(GetStream(filename, assemblyname).Stream))
return sr.ReadToEnd();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment