تحديد ما إذا كان يوجد مورد في ResourceManager

StackOverflow https://stackoverflow.com/questions/160022

  •  03-07-2019
  •  | 
  •  

سؤال

وهناك على أية حال لتحديد ما إذا كان يحتوي على ResourceManager مورد اسمه؟ حاليا أنا اصطياد MissingManifestResourceException لكن أنا أكره الحاجة إلى استخدام الاستثناءات للحالات غير استثنائية. يجب أن يكون هناك طريقة لتعداد أزواج قيمة اسم ResourceManager من خلال التفكير، أو شيء من هذا؟

تعديل : في قليلا المزيد من التفاصيل. الموارد ليست في تنفيذ التجمع، ولكن ResourceManager تعمل على ما يرام. إذا حاولت _resourceMan.GetResourceSet(_defaultCuture, false, true) أحصل اغية، في حين إذا حاولت _resourceMan.GetString("StringExists") أحصل على سلسلة الظهر.

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

المحلول

ويمكنك استخدام ResourceSet للقيام بذلك، إلا أنه يحمل جميع البيانات في الذاكرة إذا كنت تعداد ذلك. هنا y'go:

    // At startup.
    ResourceManager mgr = Resources.ResourceManager;
    List<string> keys = new List<string>();

    ResourceSet set = mgr.GetResourceSet(CultureInfo.CurrentCulture, true, true);
    foreach (DictionaryEntry o in set)
    {
        keys.Add((string)o.Key);
    }
    mgr.ReleaseAllResources();

    Console.WriteLine(Resources.A);

نصائح أخرى

واعتقد انه يمكن استخدام شيء من هذا القبيل <لأ href = "http://msdn.microsoft.com/en-us/library/system.reflection.assembly.getmanifestresourcenames(VS.80).aspx" يختلط = "نوفولو noreferrer "> Assembly.GetManifestResourceNames للتعداد قائمة الموارد المتاحة في بيان للجمعية. انها ليست جميلة ولا حل جميع الحالات الزاوية، ولكنه يعمل إذا لزم الأمر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top