2010-12-28 21 views
8

मेरे पास विजुअल स्टूडियो समाधान में दो क्लास प्रोजेक्ट हैं। वें प्रोजेक्ट की प्रकृति के कारण दोनों परियोजनाएं एक-दूसरे को संदर्भित करती हैं क्योंकि उन्हें एक-दूसरे की सेवाओं की आवश्यकता होती है ("मैं आपकी पीठ खरोंच करता हूं, आप मेरा खरोंच खरोंच" वाक्यांश के बारे में सोचते हैं।परिपत्र डिप्लेन्सी को हल करना

दृश्य स्टूडियो (2010) मुझे, परियोजना एक से बी परियोजना के लिए एक संदर्भ जोड़ने परियोजना एक पहले से ही संदर्भ देता है क्योंकि परियोजना ख नहीं दूँगा।

क्या रणनीति इस सर्कुलर निर्भरता वहाँ हल करने कर रहे हैं?

धन्यवाद

उत्तर

8

दो ठेठ दृष्टिकोण आप उपयोग कर सकते हैं।

alt text

2) दो परियोजनाओं के आम भागों का पता लगाएं और एक अलग तीसरी परियोजना में उन्हें बाहर कारक। एक तृतीय श्रेणी के पुस्तकालय के लिए

alt text

+0

बिंदु 2 ओओपी उन्मुख है। –

2

"इसे तोड़ना होगा" के अलावा कोई भी नहीं। या तो दोनों को अलग करें या उन्हें एक मॉड्यूल में गठबंधन करें।

1) एक भी परियोजना में दोनों परियोजनाओं संयुक्त करें:

4

Refactor स्वतंत्र सेवाओं (उन अन्य परियोजनाओं पर निर्भर नहीं) और दोनों परियोजनाएं हैं इस तीसरे एक संदर्भ।

दूसरी ओर, यदि दो परियोजनाओं इतना कसकर युग्मित कर रहे हैं, तो आप भी उन्हें एक ही परियोजना में संयोजन पर विचार करना चाहिए।

1

एक परियोजना इंटरफेस है कि अन्य परियोजना लागू करता है और फिर इसे अब और नहीं अन्य परियोजना के लिए एक संदर्भ की जरूरत को बेनकाब कर सकते हैं।

0

हम एक ऐसी ही स्थिति है जहाँ हम परियोजना एक से dbConnection स्ट्रिंग प्राप्त करने के लिए ख परियोजना के लिए dbCon वर्ग फोन प्राप्त करने की आवश्यकता थी। हमने इसे डेटाबेस में dbconfig तालिका में संग्रहीत करके और इसे प्रोजेक्ट बी के पैरामीटर के रूप में पास करके हल किया।

0

शायद सही समाधान एक "परियोजना ग" में की "परियोजना एक" और "परियोजना ख" भाग को तोड़ने के लिए है। फिर ए और बी दोनों सी पर निर्भर करते हैं, और न ही दूसरे पर निर्भर करता है।

कुछ वृद्धिशील निर्माण प्रक्रिया के बाहर वास्तविक परिपत्र निर्भरता रखने का कोई भी संभावित तरीका नहीं है, जहां आप एडीएल बनाते हैं जिसमें सब कुछ शामिल है B.dll की आवश्यकता है लेकिन बी.एल.एल. की आवश्यकता नहीं है, उसके बाद इसे एक नए से बदल दें नव निर्मित बीडीएल का उपयोग करके बनाया गया है और इसमें ऐसी चीजें हैं जो इस पर निर्भर करती हैं। अंत में, इस तरह की जटिल रणनीति निश्चित रूप से इसके लायक नहीं होगी।

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

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