2012-05-29 11 views
7

मुझे एक कस्टम क्लास में आवश्यकता है जहां मैं अपनी संपत्तियों में से एक बनाना चाहता हूं।सी # में आवश्यक संपत्ति कैसे बनाएं?

मैं निम्नलिखित संपत्ति को कैसे कर सकता हूं?

public string DocumentType 
{ 
    get 
    { 
     return _documentType; 
    } 
    set 
    { 
     _documentType = value; 
    } 
} 
+0

"संपत्ति की आवश्यकता बनाने के लिए" का क्या मतलब है? –

+0

"एक संपत्ति आवश्यक बनाने के लिए" का अर्थ है संपत्ति में मूल्य की आवश्यकता है जिसे इसे खाली नहीं छोड़ा जा सकता है। –

उत्तर

17

यदि आप मतलब है, "उपयोगकर्ता एक मूल्य निर्दिष्ट करना होगा" तो निर्माता के माध्यम से इसे बल:

public YourType(string documentType) { 
    DocumentType = documentType; // TODO validation; can it be null? blank? 
} 
public string DocumentType {get;private set;} 

अब आप दस्तावेज़ प्रकार निर्दिष्ट किए बिना एक उदाहरण नहीं बना सकते हैं, और यह कर सकते हैं उस समय के बाद हटाया नहीं जाएगा। तुम भी set अनुमति देते हैं लेकिन मान्य सकता है:

public YourType(string documentType) { 
    DocumentType = documentType; 
} 
private string documentType; 
public string DocumentType { 
    get { return documentType; } 
    set { 
     // TODO: validate 
     documentType = value; 
    } 
} 
2

यदि आप मतलब है कि आप चाहते हैं कि उसे हमेशा ग्राहक कोड द्वारा एक मूल्य दिया गया है, तो आपका सर्वश्रेष्ठ दांव निर्माता में एक पैरामीटर के रूप में यह आवश्यकता होती है :

class SomeClass 
{ 
    private string _documentType; 

    public string DocumentType 
    { 
     get 
     { 
      return _documentType; 
     } 
     set 
     { 
      _documentType = value; 
     } 
    } 

    public SomeClass(string documentType) 
    { 
     DocumentType = documentType; 
    } 
} 

आप अपने मान्यता कर सकते हैं - यदि आप इसे की जरूरत है - या तो संपत्ति के set एक्सेसर शरीर में या निर्माता में।

1

जोड़ें आवश्यक विशेषता propety को

Required(ErrorMessage = "DocumentTypeis required.")] 
public string DocumentType 
     { 
      get 
      { 
       return _documentType; 
      } 
      set 
      { 
       _documentType = value; 
      } 
     } 

कस्टम के लिए विशेषता विस्तार Click Here

+5

आवश्यक एट्रिब्यूट में कोई भाषा समर्थन नहीं है; कुछ यूआई फ्रेमवर्क इस तरह के एक विशेषता के लिए कुछ विशेष अर्थ जोड़ सकते हैं, लेकिन यह पूरी तरह से पुस्तकालय तक है –

0

मैं एक अन्य समाधान, नहीं आप अपनी ज़रुरत के लिए प्रयोग किया जाता है, लेकिन मेरे लिए काम किया ठीक है, क्योंकि मैं वस्तु पहली और आधारित की घोषणा विशिष्ट स्थिति पर मेरे पास अलग-अलग मूल्य हैं। मैं कन्स्ट्रक्टर का उपयोग नहीं करना चाहता था क्योंकि मुझे डमी डेटा का उपयोग करना पड़ा था।

मेरा समाधान कक्षा (सार्वजनिक प्राप्त) पर निजी सेट बनाना था और आप केवल ऑब्जेक्ट्स पर मानों को सेट कर सकते हैं। उदाहरण के लिए:

public void SetObject(string mandatory, string mandatory2, string optional = "", string optional2 = "") 
संबंधित मुद्दे