पर कार्यक्षमता का विस्तार करना वर्तमान में मैं ऐसे टूल में काम कर रहा हूं जिसे कुछ अतिरिक्त फ़ील्ड के साथ कुछ प्रकार के अनुकूलित .NET बनाने की आवश्यकता है। मैं सोच रहा है क्या दृष्टिकोण इस हल करने के लिए बेहतर है, और इन विकल्पों में सोच रहा:.NET नियंत्रण
विकल्प A: - प्रत्येक नियंत्रण के लिए एक व्युत्पन्न वर्ग बनाएँ (मान लें, CLabel, CGroupBox ...) जहां मैं प्रत्येक वर्ग पर नए क्षेत्रों को परिभाषित करता हूं। इसका मतलब खराब मानसिकता होगी लेकिन के साथ काम करना आसान होगा।
उदाहरण:
class CLabel: Label
{
public List<Control> RelatedControls {get; set;}
public String textHint;
// more stuff...
public CLabel()
{}
}
विकल्प बी: - इस विकल्प का मतलब होगा प्रत्येक नियंत्रण से एक व्युत्पन्न वर्ग बनाने नहीं है, लेकिन वास्तविक लेबल, GroupBox, आदि नियंत्रण का उपयोग और एक वर्ग encapsulating बनाने सब "अतिरिक्त" गुण। यह अतिरिक्त गुण वस्तु Control.Tag
संपत्ति में संदर्भित की जाएगी। मुझे इस बारे में संदेह है क्योंकि Tag
संपत्ति के अंदर एक जटिल वस्तु का संदर्भ देने से मुझे थोड़ा परेशान लगता है, लेकिन यह का अर्थ बेहतर मानसिकता और निश्चित रूप से subclassing नियंत्रण की आवश्यकता नहीं होगी।
उदाहरण:
Label lbl = new Label();
lbl.Tag = new ControlDescription();
विकल्प C: - इस विकल्प ए और बी बस कस्टम नियंत्रण बनाने के संयोजन के कुछ प्रकार के होने का मतलब होगा, उदाहरण के CLabel, कि एक प्रकार ControlDescription क्षेत्र कहते हैं के लिए लेबल नियंत्रण के लिए। इस तरह हम encapsulation और mantainability सुनिश्चित करते हैं, लेकिन हम Tag
बात से बचें।
मुझे पूरा यकीन है कि वहां से बहुत सारे विकल्प बेहतर हैं। संभवत: सिर्फ पॉलीमोर्फिज्म का उपयोग करना - एक अवधारणा जिसमें मुझे अभी भी समस्या है - कस्टम नियंत्रण कक्षाओं को हटाया जा सकता है। आपको लगता है कि उन विकल्पों में से कौन सा सबसे अच्छा विकल्प है? क्या आपको लगता है कि यह सब बेहतर किया जा सकता है?
धन्यवाद, मैं इसे भी देख लूंगा। –