2013-03-04 8 views
7

ओवरराइड करने के लिए मैं एक आंशिक वर्ग है और मैं निम्नलिखित की तरह कुछ करना चाहता हूँ:कैसे एक आंशिक वर्ग संपत्ति

[MetadataType(typeof(UserMetaData))] 
public partial class Person 
{ 
    public override string PrivateData 
    { 
     get 
     { 
      return customDecrypt(base.PrivateData); 
     } 
     set 
     { 
      base.PrivateData = customEncrypt(value); 
     } 
    } 
} 

ऊपर हालांकि काम नहीं करता।

कस्टम गेटटर/सेटर के लिए अनुमति देने के लिए आधार इकाई ढांचे के वर्गों को ओवरराइड करने का कोई तरीका है?

+0

"सार्वजनिक नई स्ट्रिंग PrivateData" का उपयोग कर की कोशिश कर रहा http://msdn.microsoft.com/en-us/library/51y09td4(v=vs.71).aspx#vclrfnew_newmodifier – mosca125

+0

आधार वर्ग संपत्ति है 'आभासी' के रूप में परिभाषित किया गया है? –

+0

बेस क्लास परिभाषा कहां है? 'सार्वजनिक आंशिक वर्ग व्यक्ति की तरह: व्यक्तिबेस'? – Akku

उत्तर

21

आंशिक वर्गों के पास विरासत के साथ कुछ लेना देना नहीं है, और override पूरी तरह से विरासत के बारे में है।

partial कक्षा पर कीवर्ड का मतलब है कि इसे एक ही असेंबली में कई बार घोषित किया जा सकता है। यह वही है जैसा आपने प्रत्येक partial class के प्रत्येक भाग को उसी फ़ाइल में कॉपी किया है और partial कीवर्ड हटा दिया है। चूंकि आप उसी श्रेणी में दो बार एक ही संपत्ति/फ़ंक्शन/आदि को परिभाषित नहीं कर सकते हैं, इसलिए आप इसे उसी श्रेणी के दो अलग-अलग हिस्सों में दो बार परिभाषित नहीं कर सकते हैं, यहां तक ​​कि partial कीवर्ड के साथ भी।

override, दूसरी ओर, कक्षाओं में व्युत्पन्न किया गया है ताकि यह इंगित किया जा सके कि वे बेस क्लास की कार्यक्षमता को बदल रहे हैं। यदि यह स्पष्ट रूप से वारिस नहीं करता है, तो यह object से प्राप्त होता है, जो आपको ToString() (दूसरों के बीच) ओवरराइड करने देता है।

आपका सबसे अच्छा विकल्प

क्या आप चाहते हैं/एक कस्टम टी -4 टेम्पलेट का उपयोग करने एन्क्रिप्ट उत्पन्न करने के लिए तर्क को डिक्रिप्ट, या डिजाइनर में protected या private को एन्क्रिप्टेड गुणों को सेट करने और मैन्युअल public संस्करणों जो डिक्रिप्शन कर जोड़ने या तो कर रहे हैं करने के लिए ।

1

यदि आप कोड जेनरेटर बदल सकते हैं, तो आप अत्यधिक शक्तिशाली आंशिक विधियों का उपयोग करके इसे "अनुकरण" (डिफ़ॉल्ट मानों को ओवरराइड करना) आसान बना सकते हैं।

https://msdn.microsoft.com/en-us/library/wa80x488.aspx

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