2010-10-01 10 views
6

का उपयोग कर एक विधि को ओवरराइड करें मेरे पास दो आंशिक कक्षाओं द्वारा बनाई गई कक्षा है।आंशिक वर्ग

एक ओआरएम कोड पीढ़ी द्वारा निर्मित और एक्सटेंशन के लिए एक।

इस विशेष उदाहरण में, मुझे आंशिक वर्ग द्वारा उत्पन्न गुणों में से एक को ओवरराइड करने की आवश्यकता है क्योंकि मुझे पहले कुछ सत्यापन करने की आवश्यकता है।

क्या कोड एक्सटेंशन आंशिक वर्ग की संपत्ति को ओवरराइड करने के लिए मेरी विस्तार कक्षा का उपयोग करना संभव है?

उत्तर

10

नहीं, संभव नहीं है। यदि आप कोड-पीढ़ी के मालिक हैं, तो आपको उस परिदृश्य को संभालने के लिए हुक में डाल देना चाहिए। उदाहरण के लिए, LinqToSql के लिए sqlmetal.exe आंशिक वर्गों जिनमें प्रत्येक संपत्ति सेटर इस तरह एक सा लग रहा है पैदा करता है:

if (this.myProperty != value) 
{ 
    this.OnMyPropertyChanging(value); 
    this.SendPropertyChanging(); 
    this.myProperty = value; 
    this.SendPropertyChanged("MyProperty"); 
    this.OnMyPropertyChanged(); 
} 
बेशक

, जनरेटर भी उन संपत्ति विशेष बदलते/परिवर्तन तरीकों बनाता है, लेकिन वे आंशिक रूप में उन की घोषणा :

partial void OnMyPropertyChanging(string newValue); 
partial void OnMyPropertyChanged(); 

इस सेटअप के साथ, विस्तार आंशिक कक्षा के लिए इन घटनाओं में टैप करना काफी आसान है।

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