तकनीकी रूप से, हाँ यह संभव है लेकिन कुछ नुकसान हैं। सबसे पहले, मुझे आपको एक उदाहरण दिखाएं। मान लीजिए मेरी App_GlobalResources
फ़ोल्डर तो दिखाई देता है:
/App_GlobalResources
/Test
TestSubresource.resx
TestResource.resx
प्रत्येक संसाधन फ़ाइल को एक प्रविष्टि "TestString" कहलाता है। मैंने विजुअल स्टूडियो मेनू का उपयोग करके प्रत्येक संसाधन फ़ाइल को जोड़ा, इसलिए उसने मेरे लिए एक कक्षा बनाई। डिफ़ॉल्ट रूप से, App_GlobalResources
फ़ोल्डर में जोड़े गए सभी वर्गों का Resource
का नामस्थान होगा। इसलिए, यदि मैं कक्षा जनरेटर का उपयोग करना चाहता हूं और मुझे नामस्थान में Test
चाहिए, तो मुझे TestSubresource.Designer.cs फ़ाइल में जाना होगा और मैन्युअल रूप से नामस्थान बदलना होगा। एक बार जब मैं ऐसा, मैं क्या कर सकते हैं निम्नलिखित:
var rootResource = Resources.TestResource.TestString;
var subResource = Resources.Test.TestSubResource.TestString;
मैं भी उन्हें GetGlobalResourceObject
का उपयोग कर देख सकते हैं: में संसाधनों को संदर्भित करने के
var rootResource = GetGlobalResourceObject("TestResource", "TestString");
var subResource1 = GetGlobalResourceObject("TestSubresource", "TestString");
सूचना है कि मैं अभी भी साधन के रूप में "TestSubresource" का उपयोग वह फ़ाइल हालांकि यह सबफ़ोल्डर में है। अब, कैच में से एक यह है कि सभी फाइलें App_GlobalResources
में सभी फ़ोल्डरों में अद्वितीय होनी चाहिए या आपकी प्रोजेक्ट रनटाइम त्रुटि फेंक देगी। अगर मैं करने के लिए/टेस्ट "TestResource.resx" नामक एक संसाधन जोड़ने, यह निम्न रनटाइम त्रुटि फेंक देगा:
The resource file '/App_GlobalResources/TestResource.resx' cannot be used, as it conflicts with another file with the same name.).
यह सच है, भले ही मैं नए संसाधन पर नाम स्थान बदल जाते हैं।
तो, निष्कर्ष में, हाँ, यह संभव है, लेकिन App_GlobalResources
फ़ोल्डर संरचना के विभिन्न हिस्सों में दो समान नामित संसाधन फ़ाइलों की वजह से रनटाइम त्रुटि प्राप्त करने की बाधाओं को बढ़ाएं, जो फ़ाइल सिस्टम द्वारा अनुमत है लेकिन नहीं। नेट।