2010-09-01 16 views
6

मैं एक वेब सेवा के साथ इकाई ढांचे का उपयोग कर रहा हूं और मेरे पास इकाई आंशिक वर्ग ऑब्जेक्ट्स हैं जो वेब सेवा द्वारा स्वचालित रूप से जेनरेट की गई थीं।कक्षा के भीतर विधियों/गुणों का समूह कैसे बनाएं?

मैं इन वर्गों का विस्तार करना चाहता हूं, लेकिन मैं उन्हें जेनरेट क्लास में एक नेमस्पेस (कक्षा के अंदर छोड़कर) के समान तरीके से समूहित करना चाहता हूं।

यहाँ मेरी उत्पन्न वर्ग है:

public partial class Employee : Entity 
{ 
    public int ID { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

और मैं कुछ नए गुण, कार्य, आदि के लिए इसी तरह जोड़ना चाहते हैं:

public partial class Employee : Entity 
{ 
    public string FullName { 
     get { return this.FirstName + " " + this.LastName; } 
    } 
} 

हालांकि, मैं एक साथ समूह में कोई अतिरिक्त गुण चाहते हैं तो मेरे पास जेनरेट की गई विधियों से थोड़ा अधिक दृश्य पृथक्करण है। मैं की तरह कुछ कॉल करने के लिए सक्षम होने के लिए करना चाहते हैं:

myEmployee.CustomMethods.FullName 

मैं CustomMethods बुलाया आंशिक वर्ग के भीतर एक और वर्ग बना सकते हैं और इसलिए मैं उत्पन्न गुण का उपयोग कर सकते आधार वर्ग के लिए एक संदर्भ दे सकते हैं। या शायद उन्हें एक विशेष तरीके से नाम दें। लेकिन, मुझे यकीन नहीं है कि सबसे अच्छा समाधान क्या है। मैं सामुदायिक विचारों की तलाश में हूं जो अच्छे अभ्यास के तहत स्वच्छ और गिरते हैं। धन्यवाद।

+0

Btw, तुम क्यों समूह उन कस्टम गुण करना चाहते हैं? कभी-कभी आप उन्हें चिह्नित करने के लिए गुणों का उपयोग कर सकते हैं। –

उत्तर

16

यहाँ एक और समाधान स्पष्ट इंटरफेस उपयोग कर रहा है:

public interface ICustomMethods { 
    string FullName {get;} 
} 

public partial class Employee: Entity, ICustomMethods { 
    public ICustomMethods CustomMethods { 
     get {return (ICustomMethods)this;} 
    } 
    //explicitly implemented 
    string ICustomMethods.FullName { 
     get { return this.FirstName + " " + this.LastName; } 
    } 
} 

उपयोग:

string fullName; 
fullName = employee.FullName; //Compiler error  
fullName = employee.CustomMethods.FullName; //OK 
+2

+1 कोड को अच्छी विस्तारशीलता के साथ अधिक पठनीय बनाता है। –

+0

+1 स्पष्ट इंटरफेस के लिए –

+0

क्या यह इंटरफ़ेस स्पष्ट होने के लिए मजबूर करना संभव है? – hunter

2
public class CustomMethods 
{ 
    Employee _employee; 
    public CustomMethods(Employee employee) 
    { 
     _employee = employee; 
    } 

    public string FullName 
    { 
     get 
     { 
      return string.Format("{0} {1}", 
       _employee.FirstName, _employee.LastName); 
     } 
    } 
} 

public partial class Employee : Entity 
{ 
    CustomMethods _customMethods; 
    public CustomMethods CustomMethods 
    { 
     get 
     { 
      if (_customMethods == null) 
       _customMethods = new CustomMethods(this); 
      return _customMethods; 
     } 
    } 
} 

आम तौर पर मैं सही आंशिक वर्ग पर FullName की तरह गुण रखा लेकिन मैं देख सकता हूँ तुम क्यों जुदाई चाहते हो सकता है।

+0

मुझे लगता है कि आप अपने प्रश्न के अंत में क्या कह रहे थे। मुझे लगता है कि यह जवाब भयानक नहीं है और वह अलगाव प्राप्त करता है जिसे आप ढूंढ रहे हैं। स्पष्ट इंटरफेस का उपयोग कर – hunter

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