質問

私は、例えば、ファイルシステム上のどこかにアセンブリを持っています"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();
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top