2011-02-01 16 views
8

मैं डाटाबेस संपत्ति गेटर्स (और सेटर्स द्वारा फेंकने वाले अपवादों को पकड़ने की एक अनुप्रयोग-व्यापी विधि की तलाश में हूं, लेकिन यह बिना किसी कठिनाई के काम करने योग्य है)।डब्ल्यूपीएफ डाटाबेसिंग: संपत्ति गेटर्स द्वारा फेंकने वाले अपवादों को पकड़ना

इन घटनाओं में से कोई भी टिककर खेल द्वारा फेंका अपवाद पकड़ेगा:

AppDomain.CurrentDomain.UnhandledException 
Application.Current.DispatcherUnhandledException 
Application.Current.Dispatcher.UnhandledException 

एक और विचार this thread में वर्णित के रूप में एक UpdateSourceExceptionFilter के साथ एक कस्टम बाध्यकारी वर्ग का प्रयोग है। दुर्भाग्यवश यह विधि केवल संपत्ति सेटर्स में अपवादों को पकड़ती है, न कि गेटर्स।

PresentationTraceSources.Refresh(); 
PresentationTraceSources.DataBindingSource.Listeners.Add(new PresentationLoggingTraceListener()); 
PresentationTraceSources.DataBindingSource.Switch.Level = SourceLevels.Error; 

इस विधि जो मैं चाहता मूल रूप से करने के लिए प्रकट होता है:

अंतिम विकल्प मैंने देखा है एक PresentationTraceSources ट्रेस श्रोता उपयोग करने के लिए है। दुर्भाग्य से, यह केवल मुझे एक स्ट्रिंग देता है, अपवाद नहीं, जिसका अर्थ है कि मुझे वास्तविक त्रुटि प्राप्त करने के लिए थोड़ा सा काम करना होगा।

ट्रेस लिस्टनर विधि शायद अंत में काम करेगी, लेकिन ऐसा लगता है कि यह थोड़ा हैकिश है। क्या कोई अन्य विकल्प है जो मैं याद कर रहा हूं, या क्या मैं ट्रेस लिस्टनर के साथ काफी अटक गया हूं?

+2

मैं इस –

उत्तर

1

मैं इस समस्या के लिए एक आस्पेक्ट ओरिएंटेड प्रोग्रामिंग (एओपी) दृष्टिकोण का सुझाव दूंगा। यह आपको संकलित समय पर कोड इंजेक्ट करने की अनुमति देगा जो आपके गेटर को जो चाहें उसके साथ लपेटता है, इस मामले में एक कोशिश/पकड़ और लॉगिंग। पोस्टशर्प लाओस, पोस्टशर्प http://www.sharpcrafters.com का मुफ़्त संस्करण है, जिसके साथ मैंने काम किया है।

मुझे विश्वास है कि यह http://www.richard-banks.org/2009/02/aspect-oriented-programming.html शुरू करने के लिए एक अच्छी जगह है, उस उदाहरण में वह स्वचालित रूप से NotifyPropertyChanged को कॉल करने की क्षमता वाले सेटर्स को लपेटता है। वहां कई अन्य एओपी परियोजनाएं हैं जिनका आप उपयोग भी कर सकते हैं लेकिन मैंने उनका उपयोग नहीं किया है। यहां एक अच्छी सूची है: http://www.bodden.de/tools/aop-dot-net। मैं बुनाई आधारित दृष्टिकोण का सुझाव दूंगा।

+0

के लिए उत्तर देखना चाहता हूं टिप्पणी के लिए धन्यवाद। मुझे लगता है कि यह अब तक का सबसे अच्छा सुझाव है। –

+0

@MartyDill तो क्या आप इसे एक समाधान समाधान में परिवर्तित करने में सक्षम थे? यदि आप इसके साथ अपना अनुभव पोस्ट कर सकते हैं तो बहुत अच्छा होगा। – akjoshi

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