2012-11-07 15 views
14

मैं एक एपीआई के लिए कॉल लपेटकर कर रहा हूँ और मेरी विधियों में से सबसे अपनी पहली लाइनों में है:क्या सी # के लिए अजगर सजावट की तरह कुछ है?

if (!Gree.Authorizer.IsAuthorized()) 
{ 
    return; 
} 

अजगर में मैं @login_required की तरह कुछ के साथ उन तरीकों को सजाने होगा।

c# में उस प्रकार के तर्क को दोबारा करने के लिए आप क्या उपयोग करेंगे?

उत्तर

6

आप एस्पेक्ट ओरिएंटेड प्रोग्रामिंग नामक एक सामान्य प्रोग्रामिंग पद्धति का सबसेट ढूंढ रहे हैं।

सी # कई पुस्तकालयों के माध्यम से इसका समर्थन करता है, और कोई भी सीएलआर सुविधाओं के लिए धन्यवाद, अपना खुद का रोल भी कर सकता है। Aspect Oriented Programming using .NET देखें जो इसके बुनियादी सिद्धांतों को शामिल करता है (मैं सी # के विनिर्देशों के बारे में बात कर रहे आलेख के हिस्से को जोड़ रहा हूं, लेकिन अगर आप पोस्टशर्प जैसे तैयार किए गए समाधान ढूंढ रहे हैं, जैसा कि किसी अन्य उत्तर में उल्लिखित है) बाकी भी उतना ही दिलचस्प है।

+0

लिंक के लिए धन्यवाद। मैं जांच करूंगा कि यह 'यूनिटी 3 डी' के साथ काम करता है या नहीं। – Macarse

4

आप सी # के लिए किसी भी एओपी उपकरण का उपयोग कर सकते हैं जैसे this एक।

PostSharp के साथ, सॉफ्टवेयर डेवलपर्स कार्यान्वयन पैटर्न पहलुओं बुलाया वर्गों में संपुटित, और उनके कोड का उपयोग कर कस्टम विशेषताओं को इन पहलुओं आवेदन कर सकते हैं।

+0

पोस्टशर्प एक 'exe' है। मैं इसे 'यूनिटी 3 डी' से उपयोग करने के लिए कुछ चाहता हूं जो मोनो का उपयोग करता है। – Macarse

2

मैं अजगर से परिचित नहीं हूं लेकिन ऐसा लगता है कि आप "विशेषताओं" (MSDN) की तलाश में हैं, (जो जावा एनोटेशन के समान हैं)।

विशेष रूप से, .NET "AuthorizeAttribute" प्रदान करता है, जो वही करता है जो आप चाहते हैं (और शायद थोड़ा और)। जबकि आप .NET के अंतर्गत नहीं हैं, यह अभी भी लागू करने की कोशिश कर रहे कार्यान्वयन में कुछ प्रकाश डाल सकता है।

+2

'विशेषताएँ 'कक्षा/विधि आदि से जुड़े मेटा डेटा हैं और वे स्वयं कुछ भी नहीं करते हैं। आपको एक और उपकरण का उपयोग करने की आवश्यकता है जो प्रतिबिंब का उपयोग करके इस मेटा डेटा को पढ़ता है और आवश्यक सामग्री करता है जो सभी एओपी उपकरण करता है – Ankur

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