मेरे पास बहुत सारे सदस्यों के साथ एक बहुत बड़ी कक्षा ए है, और मेरे पास एक बड़ी कक्षा बी है जिसे ऑब्जेक्ट होने पर बनाया जा सकता है। एक ऑब्जेक्ट बनाया जा सकता है जब एक बी ऑब्जेक्ट होता है। मुझे उन दोनों की आवश्यकता है, क्योंकि ए एक प्रकार का व्यूमोडेल है, जिसमें सत्यापन है और बी एक ग्राफिकल विवरण है, जिसे आसानी से प्लॉट किया जा सकता है।कनवर्टर कक्षा कैसे लिखें? मैपिंग नियमों को कुशलतापूर्वक कैसे लिखें?
इस रूपांतरण को कैसे करें?
यहाँ एक उदाहरण है, वर्णन करने के लिए मुझे क्या करना चाहते हैं:
class A
{
string s;
string t;
string u;
string v;
enum a;
enum b;
enum c;
enum d;
enum e;
Dictionary<enum, string> dict;
}
class B
{
string someString; // is essentially A.a + A.b + A.c + A.s with some rules.
int someValue; // is essentially dict.TryGetValue(enum.Entry);
string anotherString;
// ... and lots of others
}
बेशक यह कुछ मानचित्रण, करते हैं, और एक बी वस्तु का निर्माण करने के लिए सरल है और यह बहुत ही लिखने के लिए कठिन नहीं है सादे बी => इमारत एक के नियमों inverting द्वारा एक मानचित्रण => बी
तो सवाल कर रहे हैं:
- क्या यह हासिल करने के लिए कोई ज्ञात पैटर्न हैं?
- क्या ऐसी चीजों को करने का एक डिफ़ॉल्ट सी # तरीका है?
ऐसा कुछ सादा लिखना ठीक नहीं लगता है, यह कोड की सैकड़ों पंक्तियों में समाप्त होता है।
मैं भागों के लिए कनवर्टर कक्षाओं के कुछ प्रकार, SomeStringConverter, SomeValueConverter तरह के बारे में सोचा, ...
- मैं सार नियमों के साथ एक साथ की जरूरत सदस्यों मानचित्रण करने के लिए कर सकते हैं कैसे।
- मैं उन नियमों कैसे लिख सकते हैं कर एक => बी और का सबसे आसान संभव तरीका है करने के लिए बी => ए
संपादित करें: पैटर्न यहाँ के रूप में "सर्वोत्तम प्रथाओं" और नहीं होती है के रूप में "GOF डिजाइन पैटर्न"
बी कक्षा में SomeString पर "चयनकर्ता" किसी तरह का है, यह विकल्प ड्राइंग का चयन करता है, यह हमेशा 25 वर्ण लंबा है और कक्षा एक में enums उन अक्षरों को चुनते हैं, लेकिन नहीं है 1 ज्यादातर मामलों में 1। आ = "भरा", अब = "SingleCoordinate", एसी = "DrawHints" तरह SomeString =
"Y**D***RR****---***---***"
कुछ में परिणाम होगा यानी संयोजन एक ऐसी पाने के लिए महत्वपूर्ण है:
उदाहरण के लिए कहते हैं कि चलो स्ट्रिंग, लेकिन संयोजन से आप एक ऑब्जेक्ट में सेट किए जाने वाले enums प्राप्त कर सकते हैं।
EDIT2:
मैं विशेष रूप से दोनों तरीकों के लिए मेरे मानचित्रण नियमों का उपयोग करने के तरीके में दिलचस्पी रखता हूँ, अर्थात A.a = "भरा" a.b = "SingleCoordinate" ए के साथ combinded के साथ संयुक्तc = "DrawHints" का परिणाम (आंशिक स्ट्रिंग) "Y**D***RR"
होगा, और उस आंशिक स्ट्रिंग का भी अर्थ है कि एए को "भर दिया गया" और इसी तरह सेट करना होगा।
पर एक अज्ञानी है, बस कक्षाओं में से एक दूसरे के उत्तराधिकारी है। –
सोचें कि सबसे अच्छा तरीका नहीं है, क्योंकि किसी के पास इनपुट के लिए सत्यापन है और दूसरा, संरचना में पूरी तरह अलग होने के बावजूद, साजिश के लिए आसान है, लेकिन सामग्री समान है, लेकिन मैप की गई है। लेकिन स्पष्ट रूप से, मैंने पहले ही कुछ पीओएनओ कक्षा को डेटा और दो कनवर्टर्स रखने का विचार किया है, जिसके परिणामस्वरूप ए और बी और ए => पोनो और बी => पोनो के लिए कनवर्टर है। शायद यह जाने का रास्ता है। –
यह पॉको है, क्योंकि यह सब के बाद .NET है :) – EkoostikMartin