2012-03-17 10 views
5

पर कस्टम लॉगएट्रिब्यूट को कैसे कार्यान्वित करें मैं कस्टम लॉगएट्रिब्यूट को कार्यान्वित करना चाहता हूं, जो कक्षा में प्रत्येक विधि की शुरुआत और अंत में जानकारी लॉग करेगा, साथ ही इसे त्रुटि भी लॉग करनी चाहिए। मैं कक्षा में विशेषता लागू करना चाहता हूं।कक्षा

मैंने पोस्टशर्प देखा है। लेकिन मैं PostSharp या इसी तरह की लाइब्रेरी का उपयोग करने के बजाय, अपनी खुद की कस्टम लॉग विशेषता प्राप्त करना चाहता हूं।

प्रदर्शन प्रमुख कुंजी है, LogAttribute प्रदर्शन को प्रभावित नहीं करना चाहिए।

मैंने IMessageSync के बारे में पढ़ा है, लेकिन यह प्रदर्शन को प्रभावित करता है।

एमवीसी में, हमें कस्टमफिल्टर मिलते हैं, जिसमें हमारे पास LogActionHandler हो सकता है, जो प्रत्येक एक्शन विधि की शुरुआत और अंत में निष्पादित होगा। मैं एएसपी.Net वेब फॉर्म में समान कार्यान्वित करना चाहता हूं।

कोई भी नमूना कोड प्रदान करके मेरी सहायता कर सकता है।

+4

पहियों एक नए अंदाज़ में नहीं है और अच्छी तरह से परीक्षण किया प्रयोग कर एक समय और सामुदायिक पुस्तकालयों – sll

+0

वहाँ किसी भी मुफ्त पुस्तकालय प्रवेश करें गुण के लिए उपलब्ध है द्वारा सत्यापित? PostSharp भुगतान किया जाता है ..... – user1233802

+2

@ user1233802: PostSharp एक नि: शुल्क "प्रारंभ संस्करण" है कि आप अपने स्वयं के कस्टम 'LogAttribute' हालांकि आप पसंद करेंगे लागू करने के लिए अनुमति देगा है, और यह प्रदर्शन को प्रभावित नहीं करेगा क्योंकि इसमें बिल्कुल भी किया है समय संकलित करें। –

उत्तर

2

एकता - माइक्रोसॉफ्ट के आईओसी/निर्भरता इंजेक्शन कंटेनर भी विधि इंटरसेप्शन की अनुमति देता है। http://hmadrigal.wordpress.com/2010/12/25/aspect-oriented-programming-and-interceptor-design-pattern-with-unity-2/

प्रो:

यहाँ एक "DiagnosticsInterceptor", कि एक ही करता है आप चाहते हैं, इसका एक उदाहरण यह नि: शुल्क

कोन है: यह एकता/डि/आईओसी पैटर्न की आवश्यकता है। और आपकी कक्षा में इंटरफ़ेस या वर्चुअल विधि होना आवश्यक है।

दुर्भाग्य से यह एएसपी.NET नियंत्रणों के लिए सच नहीं है। तो यह पद्धति केवल अपने कस्टम वर्ग के लिए काम करेंगे: देखें Intercept Unity 2.0 HandlerAttribute without an interface