मैं spring.net आईओसी निर्भरता इंजेक्शन का उपयोग कर अपने एएसपीनेट वेब एप्लिकेशन के लिए अपनी एक्सएमएल कॉन्फ़िगरेशन फ़ाइलों को स्थापित कर रहा हूं। मैंने web.config में मेरी प्रत्येक कॉन्फ़िगरेशन फ़ाइलों का संदर्भ दिया। Spring.net कॉन्फ़िगरेशन फ़ाइल (सेटिंग्स.एक्सएमएल) में सेटिंग का नमूना है:एकाधिक कॉन्फ़िगरेशन फ़ाइलों में spring.net ऑब्जेक्ट को फिर से परिभाषित करें
<object id="obj1"
type="NS.Common.Cache.Class, NS.Common"
singleton="true"
init-method="Initialize"
destroy-method="Dispose">
<property name="Name" value="My Name" />
</object>
यह सब ठीक काम करता है।
अब मैं अपने वेब एप्लिकेशन को कई वातावरण में स्थापित करता हूं इसलिए मैं पर्यावरण के लिए spring.net कॉन्फ़िगरेशन फ़ाइल बना रहा हूं। देव, क्यूए, प्रोड।
तो जब एप्लिकेशन इंस्टॉल करते हैं, तो लागू वातावरण वसंत फ़ाइल को web.config में संदर्भित किया जाता है। यह एक स्वचालित इंस्टॉलर का हिस्सा है।
क्यूए वातावरण फ़ाइल के भीतर, मैं करने के लिए "obj1" ऊपर वस्तु को फिर से परिभाषित करना चाहते हैं:
<object id="obj1"
type="NS.Common.Cache.Class2, NS.Common"
singleton="true"
init-method="Initialize"
destroy-method="Dispose">
<property name="Name" value="My New Name" />
</object>
हालांकि इस रूप में (पर्यावरण फाइल करने के लिए संदर्भ जोड़ने) स्वचालित है, settings.xml फ़ाइल है परिवर्तन नहीं हुआ है।
और अब एक ही आईडी के साथ परिभाषित ऑब्जेक्ट के साथ 2 फाइलों का संदर्भ - यह बड़ी समस्याएं उत्पन्न करता है क्योंकि रन टाइम त्रुटियां होती हैं।
क्या कोई तरीका है कि मैं qa.xml और ध्वज में शामिल कर सकता हूं या इस ऑब्जेक्ट परिभाषा को हाइलाइट करने के लिए किसी अन्य परिभाषित ऑब्जेक्ट को किसी अन्य एक्सएमएल फ़ाइल में उसी ऑब्जेक्ट आईडी के साथ ओवरराइड करता है?
आप दो समान आईडी लोड कर सकते हैं और यह पहले सूचीबद्ध ऑब्जेक्ट को "ओवरराइड" करेगा (सृजन से पहले, AFAIK उन्हें<संसाधन ...> के माध्यम से संदर्भित करके विभिन्न फ़ाइलों में होना चाहिए। इसकी वजह से यह अच्छा है "वैश्विक अर्थ" से शुरू होने वाले क्रम में अपने संदर्भ संसाधनों को "स्थानीय अर्थ" से शुरू करने के लिए अभ्यास करें (अंतिम प्रविष्टि में app.config's होने पर) –
Beachwalker
@Stegi : इसे उत्तर के रूप में क्यों न दें? ऐसा लगता है कि यह ओपी की समस्या हल करता है। – Marijn
* एकल * एक्सएमएल फ़ाइल में, एक आईडी आईडी केवल एक बार निर्दिष्ट की जा सकती है।'आईडी' विशेषता वास्तव में एक एक्सएमएल विशेषता है - इसलिए एक्सएमएल पार्सर आपको विजुअल स्टूडियो में और रनटाइम पर फ़ाइल लोड करते समय अतिरिक्त सत्यापन देता है। लेकिन जैसा कि स्टीगी का उल्लेख है, आप एक ही आईडी के साथ एक ही आईडी के साथ एक ही संदर्भ में लोड कर सकते हैं, जो एक ही संदर्भ से भरा हुआ है। आखिरी लोड की गई फ़ाइल से परिभाषा एक ही आईडी के साथ पिछली परिभाषाओं को ओवरराइड करता है। – Marijn