2012-06-21 14 views
5

मैं सी # में एक डब्ल्यूपीएफ आवेदन के साथ काम कर रहा हूं।एक ही नामस्थान में एक स्थिर वर्ग का उपयोग कैसे करें लेकिन एक और असेंबली?

Project1:: मैं निम्नलिखित के रूप में एक स्थिर कक्षा में परिभाषित स्थिरांक की एक संख्या है

namespace MyCompany 
{ 
    public static class Constants 
    { 
     public static int MY_CONSTANT = 123456; 
    } 
} 

तब सब मैं क्या करने की जरूरत मेरी कहीं भी परियोजना 1 के अंदर लगातार उपयोग करने के लिए है:

int x = Constants.MY_CONSTANT; 

अब मैं एक ही समाधान करने के लिए एक अन्य परियोजना जोड़ सकते हैं और एक ही रूट नाम स्थान का उपयोग करें:

परियोजना 2

namespace MyCompany.MyControl 
{ 
    class VideoControl 
    { 
     int x; 
     x = Constants.MY_CONSTANT; //<-- doesn't work 
     x = MyCompany.Constants.MY_CONSTANT; //<-- doesn't work either 
    } 
} 

मैं दूसरी असेंबली से अपने स्थिर कॉन्सटेंट्स क्लास तक पहुंचने का कोई तरीका नहीं समझ सकता। मैं पहली असेंबली का संदर्भ भी नहीं जोड़ सकता, क्योंकि यह परिपत्र निर्भरता की ओर जाता है (दूसरी परियोजना असेंबली पहली परियोजना असेंबली द्वारा उपयोग किया जाने वाला एक डब्ल्यूपीएफ नियंत्रण है)।

क्या मैं भी ऐसा करने की कोशिश कर रहा हूं? वर्तमान में मेरा कामकाज कन्स्ट्रक्टर में सभी आवश्यक स्थिरांक पास कर रहा है, लेकिन मैं बस उन्हें सीधे एक्सेस करना चाहता हूं।

+4

आपको एक संदर्भ की आवश्यकता है - आपको अपनी परिपत्र निर्भरता को हल करने की आवश्यकता होगी - शायद स्थिरांक वर्ग को तीसरी असेंबली में ले जाएं जो दोनों अन्य असेंबली संदर्भ दे सकते हैं। – Blorgbeard

+0

बिंदु के बगल में: यदि आप निरंतर चाहते हैं, तो आप इसे निरंतर 'सार्वजनिक आधार int int_CONSTANT = 123456;' क्यों नहीं घोषित करते हैं? – Hinek

उत्तर

2

आप प्रोजेक्ट 1 से प्रोजेक्ट 2 तक सभी स्थिर स्थिरांक को स्थानांतरित कर सकते हैं, इसलिए, सभी स्थिरांक प्रोजेक्ट 1 और प्रोजेक्ट 2 दोनों के लिए दृश्यमान हैं; मैंने सिफारिश की है कि एक और परियोजना (शायद आम) पेश करें जो अन्य सभी परियोजनाओं द्वारा साझा की जाने वाली सभी चीजों को प्रबंधित करने में मदद कर सकती है। यह एक आम बुनियादी ढांचा परियोजना है।

+0

मैं एक उत्तर के रूप में एक तीसरी असेंबली शुरू करने स्वीकार करूँगा। किसी कारण से मैंने तब तक सोचा जब तक कि मैं एक ही नामस्थान में हूं, मुझे संदर्भों की आवश्यकता नहीं है। – Eternal21

0

आपको प्रोजेक्ट 2 में प्रोजेक्ट 1 में एक संदर्भ जोड़ना है, तो इसे ठीक काम करना चाहिए। क्या आपको चित्रण करने के लिए ग्राफिक की आवश्यकता है?

यहाँ एक MSDN लिंक http://msdn.microsoft.com/en-us/library/wkze6zky.aspx

यहाँ एक अतः> चित्रों के साथ जवाब देने है Adding projects to a project in Visual Studio 2010

+0

प्रोजेक्ट 1 एक डब्ल्यूपीएफ प्रोजेक्ट है जो प्रोजेक्ट 2 के अंदर एक डब्ल्यूपीएफ नियंत्रण का उपयोग करता है, इसलिए मुझे पूरा यकीन है कि यह पहले से ही इसका संदर्भ देता है। दुर्भाग्यवश मेरा कोड काम पर है, इसलिए मैं कल तक दोबारा जांच नहीं कर पाऊंगा। तब आप पर वापस आ जाएगा। – Eternal21

+0

वैसे यह पूछने में अजीब बात है कि जब आप इसे जांच नहीं सकते हैं तो इसे समझने में आपकी मदद करने के लिए ;-) – jcolebrand

+0

मैं स्मृति से काम कर रहा था, क्योंकि समस्या मुझे घर पर चिपका रही है। बस जांच की गई और हां प्रोजेक्ट 1 में प्रोजेक्ट 2 का संदर्भ है। – Eternal21

0

अन्य जवाब करीब है है और, लेकिन यह वास्तव में रिवर्स है: परियोजना 2 परियोजना के लिए 1. कोड एक संदर्भ की जरूरत है चाहिए फिर संकलित करें।

संपादित करें:

क्षमा करें, मैं देख रहा हूँ कि आप पहले से ही इस पर विचार किया है कि। हां, किसी ने तीसरी असेंबली पेश करके एक परिपत्र निर्भरता मुद्दे से बचने के लिए टिप्पणी की।

+0

मेरे लिए "प्रोजेक्ट 1" और "प्रोजेक्ट 2" के बीच का अंतर केवल दिशात्मकता है।अगर उसने नाम दिए, जैसे कि "ऑटोमैनस्ट्रेटर्स" और "कार डीलरशिप" मैं अधिक स्पष्ट हो सकता था। कृपया इरादे को इंगित करने के लिए सामान्य रूप से गैर-दिशात्मक नामों को भ्रमित न करें, लेकिन उदाहरण में अंतर्निहित इरादे की तलाश करें, जैसे लिंक किए गए प्रश्न जो एक परियोजना को दूसरे के भीतर से संदर्भित करते हैं। – jcolebrand

+0

क्षमा करें, यह पहला सवाल है जिसे मैंने स्टैक ओवरफ्लो पर पूछा था, और मैं जितना संभव हो उतना सामान्य कोड को पार्स करना आसान बनाने के लिए कोड को रखने की कोशिश कर रहा था। ऐसा लगता है कि अंत में मैंने इसे बहुत कम कर दिया। – Eternal21

+0

एनडीए का उल्लंघन किए बिना, भविष्य में अत्यधिक स्पष्ट होने के लिए स्वतंत्र महसूस करें। – jcolebrand