سؤال

لدي تجميع في مكان ما على نظام الملفات، على سبيل المثال."C: emp est.dll".يوجد في هذا التجميع قاموس الموارد، على سبيل المثال."abc.xaml".

كيف يمكنني الحصول على ResourceDictionary؟ربما هناك طريقة لاستخدام التأملات؟ولم أجد الحل حتى الآن.

شكرا لك مقدما!

يحرر:أردت فقط أن أضيف أنني أريد الوصول إلى الموارد الموجودة في القاموس، على سبيل المثال.موضه.

هل كانت مفيدة؟

المحلول 2

يحرر: لقد وجدت حلاً أفضل يعمل مع ResourceDictionaries:

Assembly.LoadFrom(@"C:\temp\test.dll");
ResourceDictionary rd = new ResourceDictionary();
rd.Source = new Uri("/test;component/myresource.xaml");

حسنًا ، لم أتمكن من العمل مع موارد الموارد ، لذلك أنا أستخدم ملفات الموارد القديمة الجيدة بدلاً من ذلك ؛) لأي شخص مهتم ، إليك كيف فعلت ذلك:

Assembly a = Assembly.LoadFile(@"C:\temp\test.dll");
ResourceManager rm = new ResourceManager("NameOfResource", a);
object o = rm.GetObject("xyz");

يمكنك الحصول على "NameOfResource" باستخدام Reflector، كما اقترح إيان.

نصائح أخرى

وتحتاج فعلا لكتابة يوري مثل هذا:

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