From 067fcdc29b2730fabbf3db96bfebc68deeb5e648 Mon Sep 17 00:00:00 2001 From: Michael Becker Date: Wed, 2 Sep 2020 12:33:19 -0400 Subject: [PATCH] convenience methods for loading manifest resource streams --- MBS.Framework/Reflection.cs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/MBS.Framework/Reflection.cs b/MBS.Framework/Reflection.cs index 963d7c5..da3fe2f 100644 --- a/MBS.Framework/Reflection.cs +++ b/MBS.Framework/Reflection.cs @@ -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 TypesByName = new Dictionary(); public static Type FindType(string TypeName) { @@ -193,5 +208,21 @@ namespace MBS.Framework fi.SetValue(obj, value); } } + + public static ManifestResourceStream[] GetAvailableManifestResourceStreams() + { + List list = new List(); + 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(); + } } }