2010-10-19 34 views
5

क्या कोई तरीका है कि मैं ऑटो लागू किए गए गुणों में मूल्यों को कॉल ट्रैक और अवरुद्ध कर सकता हूं?स्वत: कार्यान्वित गुणों को ट्रैक करें

[Tracked] 
public int SomeProperty { get; set; } 

आदर्श रूप में विशेषता संपत्ति मूल्यों में परिवर्तन अवरोधन करने में सक्षम होगा:

मैं कोड है कि इस तरह एक सा लग रहा है करना चाहते हैं। क्या यह संभव है?

मैं नहीं चाहता कि यह किसी ऑब्जेक्ट पर कोड स्पिन का दूसरा टुकड़ा हो और मूल्यों का अनुरोध करे, लेकिन इसके बजाय विशेषता को सेट के रूप में मानना ​​चाहिए।

उत्तर

4

नहीं। आप जिस तरह से ऐसा करते हैं वह ऑटो गुणों का उपयोग नहीं कर रहा है। एकमात्र संभावित समाधान है, Castle AOP जैसे कुछ वर्ग का उपयोग अपने वर्ग के चारों ओर स्वचालित रैपर बनाने के लिए करना है और इसमें परिवर्तनों को ट्रैक करना है, लेकिन यह लागू करने के लिए बहुत कठिन काम है।

3

आपको एओपी ढांचे के साथ ऐसा करने में सक्षम होना चाहिए, जैसे कि PostSharp (जो कि अब मैं वाणिज्यिक हूं)। कुछ और जुड़े here हैं, लेकिन कुछ लिंक मर चुके हैं।

3

यदि आप रनटाइम पर काम करने वाले समाधान चाहते हैं, तो आप एक पहलू उन्मुख प्रोग्रामिंग (एओपी) ढांचा चाहते हैं; मैंने कुछ सफलता के साथ CciSharp का उपयोग किया है। यह PostSharp के रूप में परिपक्व नहीं है, लेकिन एक ही बुनियादी सिद्धांत पर काम करता है: यह आपके पहले से संकलित कोड को संशोधित करेगा, एक और असेंबली का उत्पादन करेगा।

यदि आप इसे परीक्षण (या प्रोफाइलिंग) के लिए चाहते हैं, तो एक और विकल्प है: Microsoft Moles (जो भी मुफ़्त है)। यह बहुत अलग तरीके से काम करता है; यह प्रोग्राम को बदलने के दौरान इंजेक्शन के "डिटोर" प्रकार का उपयोग करता है, संपत्ति गेटटर और सेटर विधियों को रोकता है।

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