アセンブリからのResourceDictionaryをロード
-
22-08-2019 - |
質問
私は、例えば、ファイルシステム上のどこかにアセンブリを持っています"C:\一時\のTEST.DLL"。 そのアセンブリ内のResourceDictionaryがあります、例えば"abc.xaml" ます。
私はのResourceDictionaryことをどのように得ることができますか?たぶん、反射を使用しての方法はありますか?私は今のところ解決策を見つけることができませんでした。
事前に感謝します!
編集:ちょうど私が辞書内のリソースにアクセスすることを追加したい、例えばスタイルます。
解決 2
の編集の私はResourceDictionariesで動作し、より良い解決策を見つけます:
Assembly.LoadFrom(@"C:\temp\test.dll");
ResourceDictionary rd = new ResourceDictionary();
rd.Source = new Uri("/test;component/myresource.xaml");
<時間>
); まあ、私はそれがResourceDictionariesで動作させることができなかったので、私が代わりに、古き良きリソースファイルを使用しています 興味のある人のために、ここで私はそれをやった方法です。
Assembly a = Assembly.LoadFile(@"C:\temp\test.dll");
ResourceManager rm = new ResourceManager("NameOfResource", a);
object o = rm.GetObject("xyz");
あなたはイアンが示唆したように、反射板で "NameOfResource" を取得することができます。
他のヒント
あなたが実際にこのようなURIを記述する必要があります:
Assembly.LoadFrom(@"C:\temp\test.dll");
ResourceDictionary rd = new ResourceDictionary();
rd.Source = new Uri(@"pack://application:,,,/test;component/myresource.xaml");
(ルッツは今の上にこれを手渡した)反射するのコピーをつかみます。アセンブリとその中のリソースの名前空間などを見ているを使用します。
;次に、埋め込まれたリソースでは、このようなものを読んで
Assembly asm = System.Reflection.Assembly.GetExecutingAssembly();
using (System.IO.Stream s = asm.GetManifestResourceStream(<yourname>)
{
using (System.IO.StreamReader reader = new System.IO.StreamReader(s))
{
string xml = reader.ReadToEnd();
}
}
所属していません StackOverflow