「C:\temp\test.dll」など、ファイル システムのどこかにアセンブリがあります。そのアセンブリには、「abc.xaml」などの ResourceDictionary があります。
その ResourceDictionary を取得するにはどうすればよいですか? たぶん、反射を使用する方法はありますか? これまで解決策が見つかりませんでした。
前もって感謝します!
編集:スタイルなど、ディクショナリのリソースにアクセスしたいことを追加したかっただけです。
「C:\temp\test.dll」など、ファイル システムのどこかにアセンブリがあります。そのアセンブリには、「abc.xaml」などの ResourceDictionary があります。
その ResourceDictionary を取得するにはどうすればよいですか? たぶん、反射を使用する方法はありますか? これまで解決策が見つかりませんでした。
前もって感謝します!
編集:スタイルなど、ディクショナリのリソースにアクセスしたいことを追加したかっただけです。
実際には、次のように Uri を記述する必要があります。
Assembly.LoadFrom(@"C:\temp\test.dll");
ResourceDictionary rd = new ResourceDictionary();
rd.Source = new Uri(@"pack://application:,,,/test;component/myresource.xaml");
編集: ResourceDictionaries で動作するさらに優れたソリューションを見つけました:
Assembly.LoadFrom(@"C:\temp\test.dll");
ResourceDictionary rd = new ResourceDictionary();
rd.Source = new Uri("/test;component/myresource.xaml");
さて、ResourceDictionaries で動作させることができなかったので、代わりに古き良き Resource Files を使用しています ;) 興味のある方のために、私が行った方法を次に示します。
Assembly a = Assembly.LoadFile(@"C:\temp\test.dll");
ResourceManager rm = new ResourceManager("NameOfResource", a);
object o = rm.GetObject("xyz");
イアンが提案したように、リフレクターで「NameOfResource」を取得できます。
リフレクターを手に入れる(ルッツから渡された)。それを使用して、その中のリソースのアセンブリと名前空間などを確認します。
次に、埋め込みリソースを次のように読み取ります。
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();
}
}