मुझे एक कोड बेस मिला है जिसे अच्छी तरह से सोचा नहीं गया था, और कुछ परिपत्र संदर्भ समस्याओं में चल रहा हूं। मेरी टीम में वर्तमान में एक बड़ा रिफैक्टर करने का समय या संसाधन नहीं है, इसलिए मैं सोच रहा था कि कुछ स्विच था जो मैं कह सकता था कि "इन दो डीएलएस को परमाणु रूप से बनाएं।"क्या परिपत्र संदर्भ समस्याओं को हल करने के लिए कोई हैक हैं?
एक सरल उदाहरण:
DLL D0:
class A1 -> References B1
class B1 -> References A1
कक्षा A1 और B1 एक दूसरे के लिए संदर्भ है, और के रूप में वे एक ही DLL में हैं, इस ठीक है - लेकिन वे आम में कुछ ख़ास नहीं है मैं तो उन्हें अलग-अलग डीएलएस में तोड़ना चाहते हैं।
DLL D1: class A1 -> References D2.B1
DLL D2: class B1 -> References D1.A1
मैं MSBuild बताने के लिए निर्माण करने के लिए (डी 1 + डी 2) के रूप में यदि कोड के सभी एक भी dll में थे सक्षम होना चाहते हैं:
हालांकि, निम्नलिखित एक परिपत्र संदर्भ समस्या के कारण असंभव है । क्या मैं यहां कुछ भी कर सकता हूं या क्या मैं एसओपी का पालन करता हूं और "इसे हैक करता हूं?"
अस्वीकरण: मुझे समझ में आता है कि मेरा मतलब है कि मेरे मॉडल के साथ मुझे बहुत बड़ी समस्या है (सबसे चमकदार इंटरफेस का अनुचित उपयोग है), लेकिन छोटी कंपनी में, असली दुनिया परिदृश्य बताते हैं कि मैं उत्पादन कीड़े को ठीक करने के लिए पीछे की ओर झुकता हूं सर्वोत्तम प्रथाओं की कीमत पर।
उन्हें अलग-अलग भौतिक फ़ाइलों में तोड़ने का क्या फायदा है? आप उन्हें अलग-अलग परियोजनाओं में रख सकते हैं और एक एकल .netModule बनाने के लिए एमएसबिल्ड का उपयोग कर सकते हैं जिसे बाद में निष्पादन योग्य में संकलित किया जा सकता है ... लेकिन दूसरी तरफ जा रहा है ... इंटरफ़ेस और निर्भरता इंजेक्शन को दोबारा बिना किए बिना। – cfeduke
ऐसा लगता है जैसे हैक्स आपके परिपत्र संदर्भों के मुद्दे को जन्म देता है, और वे वास्तविक समाधान का हिस्सा नहीं होंगे। –