5

मेरे .NET 4 समाधान में, मेरे पास दो अलग-अलग प्रोजेक्ट हैं- एक वेब एप्लिकेशन प्रोजेक्ट और क्लास लाइब्रेरी प्रोजेक्ट।क्लास लाइब्रेरी प्रोजेक्ट में कनेक्शन स्ट्रिंग प्राप्त करें

वेब अनुप्रयोग प्रोजेक्ट में, डेटाबेस कनेक्शन स्ट्रिंग web.config फ़ाइल में है। मैं क्लास लाइब्रेरी प्रोजेक्ट से उस कनेक्शन स्ट्रिंग को एक्सेस करना चाहता हूं। क्या यह संभव है? यदि हां, तो कैसे?

यदि कनेक्शन स्ट्रिंग प्राप्त करने के लिए कोई बेहतर तरीका है, तो कृपया मुझे बताएं।

उत्तर

5

अपनी कक्षा पुस्तकालय से इसे एक्सेस करने के लिए System.Configuration का संदर्भ जोड़ें और फिर System.Confinguration.ConfigurationManager.ConnectionStrings का उपयोग करें।

कक्षा पुस्तकालय से इसे पढ़ने के लिए आदर्श नहीं है। आखिरकार, क्या आप कह सकते हैं कि आपकी कक्षा लाइब्रेरी हमेशा कॉन्फ़िगरेशन फ़ाइल के साथ कुछ खाया जाएगा? निश्चित रूप से यदि आप इसे अन्य डेवलपर्स के साथ साझा नहीं करते हैं, खासकर विभिन्न प्लेटफार्मों के साथ।

पर विचार करें:

  1. आईओसी - निर्भरता इंजेक्शन का उपयोग निर्भरता कि विन्यास सेटिंग्स में शामिल है प्रदान करते हैं। ये खपत पुस्तकालय (वेब ​​ऐप) द्वारा आबादी होगी।
  2. उन पर निर्भर तत्वों का उपभोग करते समय कक्षा पुस्तकालय में सेटिंग्स को पास करें।

उदा .:

public class MyLibraryContainer 
{ 
    private string _connectionString; 

    public MyLibraryContainer(string connectionString) 
    { 
     _connectionString = connectionString; 
    } 
} 
+0

"क्या आप कह सकते हैं कि आपकी कक्षा लाइब्रेरी हमेशा कॉन्फ़िगरेशन फ़ाइल के साथ कुछ खाया जाएगा?" चूंकि पुस्तकालय सी # में लिखा गया था, मुझे लगता है कि यह एक मान्य धारणा है। ऐसा कहा जा रहा है कि, मैं सहमत हूं कि क्लास लाइब्रेरी में सीधे 'कॉन्फ़िगरेशन प्रबंधक' तक पहुंच गलत है, क्योंकि यह कार्यक्षमता लाइब्रेरी के दायरे से बाहर है। –

+1

@EladLachmi "चूंकि पुस्तकालय सी # में लिखा गया था, मुझे लगता है कि यह एक मान्य धारणा है"। मैं असहमत हूं। सिर्फ इसलिए कि पुस्तकालय सी # में लिखा गया है इसका मतलब यह नहीं है कि इसे .NET समाधान से उपभोग किया जाएगा। उदाहरण के लिए, यह उस मामले के लिए जावा या किसी अन्य चीज़ में लागू हो सकता है। अब मुझे उत्सुकता है कि क्या होगा यदि आपने लाइब्रेरी में कॉन्फ़िगरेशन मैनेजर का उपभोग किया जिसके कॉलर का कोई समर्थन नहीं है। TODO सूची के लिए एक है! :) –

+0

@EladLachmi दूसरी तरफ, यदि आपने इसे लिखा है, और इसे साझा करने का कोई इरादा नहीं है, तो यह एक सुरक्षित धारणा होगी। –

1

वेब ऐप प्रोजेक्ट में एक स्थिर विधि के साथ एक स्थैतिक वर्ग बनाएं जहां आप कनेक्शन स्ट्रिंग वापस कर दें, क्लास लाइब्रेरी प्रोजेक्ट में संदर्भ दें और आपके द्वारा बनाई गई विधि को कॉल करें।

+0

यह अभी तक सबसे आसान समाधान कर रहा है। –

+7

क्या आपको एक परिपत्र संदर्भ त्रुटि नहीं मिलती है क्योंकि क्लास लाइब्रेरी को इस स्थैतिक वर्ग तक पहुंचने के लिए वेब प्रोजेक्ट का संदर्भ देने की आवश्यकता होगी और वेब प्रोजेक्ट स्पष्ट रूप से क्लास लाइब्रेरी का संदर्भ दे रहा है? – ScubaSteve

+0

यह सही समाधान नहीं है। कक्षा पुस्तकालय को विभिन्न परियोजनाओं में संदर्भित करने की आवश्यकता है, इसलिए क्लास लाइब्रेरी में वेबएप संदर्भ जोड़ने का सही कॉल नहीं है। इस मामले में कक्षा पुस्तकालय की निर्भरता समाप्त हो गई है। –

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