2008-10-01 14 views
17

में मौजूद है या नहीं, यह निर्धारित करने के लिए कि संसाधन संसाधन में नामित संसाधन है या नहीं? वर्तमान में मैं अनुपलब्ध मैनिफेस्ट रिसोर्स एक्सेप्शन को पकड़ रहा हूं लेकिन मुझे असाधारण स्थितियों के लिए अपवादों का उपयोग करने से नफरत है। प्रतिबिंब के माध्यम से संसाधन प्रबंधक के नाम मूल्य जोड़े को गिनने के लिए कुछ तरीका होना चाहिए, या कुछ?यह निर्धारित करें कि कोई संसाधन संसाधन प्रबंधक

संपादित करें: थोड़ा और विस्तार। संसाधन असेंबली निष्पादित करने में नहीं हैं, हालांकि संसाधन प्रबंधक बस ठीक काम कर रहा है। अगर मैं _resourceMan.GetResourceSet(_defaultCuture, false, true) आज़माता हूं तो मुझे शून्य मिलता है, जबकि अगर मैं _resourceMan.GetString("StringExists") कोशिश करता हूं तो मुझे एक स्ट्रिंग वापस मिलती है।

उत्तर

22

आप ऐसा करने के लिए संसाधनसेट का उपयोग कर सकते हैं, केवल यह सभी डेटा को मेमोरी में लोड करता है यदि आप इसे गिनती करते हैं। यहां 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); 
+0

जब मैं संसाधन प्रबंधक से संसाधनसेट प्राप्त करने का प्रयास करता हूं तो मुझे वापस वापस मिल जाता है। –

+0

ठीक है, मुझे यह काम मिल गया है, लेकिन मुझे GetResourceSet पर कॉल करने से पहले एक संसाधन लोड करने का प्रयास करना होगा। अजीब। –

3

मुझे लगता है कि आप असेंबली के मैनिफेस्ट में उपलब्ध संसाधनों की सूची का आकलन करने के लिए Assembly.GetManifestResourceNames जैसे कुछ का उपयोग कर सकते हैं। यह सुंदर नहीं है और सभी कोने के मामलों को हल नहीं करता है, लेकिन यदि आवश्यक हो तो काम करता है।

+0

जो शून्य तारों की एक सरणी देता है। –

+0

उपग्रह संसाधन में संसाधन हैं? – user7116

+2

आप उन्हें संसाधन प्रबंधक नाम दे रहे हैं, उन संसाधन प्रबंधक में संसाधनों के नाम नहीं;)। –

संबंधित मुद्दे