convenience methods for loading manifest resource streams

This commit is contained in:
Michael Becker 2020-09-02 12:33:19 -04:00
parent f1939214fb
commit 067fcdc29b
No known key found for this signature in database
GPG Key ID: 506F54899E2BFED7

View File

@ -26,6 +26,21 @@ namespace MBS.Framework
{
public class Reflection
{
public class ManifestResourceStream
{
public Assembly Assembly { get; private set; }
public string Name { get; private set; }
public System.IO.Stream Stream { get; private set; }
internal ManifestResourceStream(Assembly assem, string name, System.IO.Stream stream)
{
Assembly = assem;
Name = name;
Stream = stream;
}
}
private static Dictionary<string, Type> TypesByName = new Dictionary<string, Type>();
public static Type FindType(string TypeName)
{
@ -193,5 +208,21 @@ namespace MBS.Framework
fi.SetValue(obj, value);
}
}
public static ManifestResourceStream[] GetAvailableManifestResourceStreams()
{
List<ManifestResourceStream> list = new List<ManifestResourceStream>();
Assembly[] asms = MBS.Framework.Reflection.GetAvailableAssemblies();
for (int i = 0; i < asms.Length; i++)
{
string[] resnames = asms[i].GetManifestResourceNames();
for (int j = 0; j < resnames.Length; j++)
{
System.IO.Stream stream = asms[i].GetManifestResourceStream(resnames[j]);
list.Add(new ManifestResourceStream(asms[i], resnames[j], stream));
}
}
return list.ToArray();
}
}
}