मैं एक साधारण गुण बना लिया है:मेरा .NET विशेषता कोई कार्रवाई क्यों नहीं करती है?
[AttributeUsage(AttributeTargets.Method)]
public class InitAttribute : System.Attribute
{
public InitAttribute()
{
Console.WriteLine("Works!");
}
}
और मैं इसे एक सरल विधि के लिए लागू होते हैं:
static class Logger
{
public static string _severity;
public static void Init(string severity)
{
_severity = severity;
}
[Init()]
public static void p()
{
Console.WriteLine(_severity);
}
}
क्या चल रहा है सुंदर streight से आगे है। केवल, मैं उम्मीद करता हूं कि एट्रिब्यूट एक एक्शन (प्रिंटिंग वर्क्स!) करने की उम्मीद है, लेकिन ऐसा नहीं होता है।
व्यसन, प्रिंटिंग "काम करता है!" निश्चित रूप से केवल डीबगिंग उद्देश्यों के लिए है: मैं इंस्टेंस की संपत्ति _severity
(उदाहरण के लिए है, = null, उदाहरण के लिए) तक पहुंचना चाहता हूं, लेकिन सब कुछ जो मैं गुणों के बारे में पढ़ता रहता हूं (जो मेरे लिए बहुत नए हैं) कक्षा 'विधियों या गुणों और प्रतिबिंब के माध्यम से इतने पर पहुंचने के बारे में है। एक बार जब मैंने _severity
का मूल्यांकन किया है, तो मैं सजाए गए तरीके के व्यवहार को कैसे संशोधित कर सकता हूं (इस मामले में, अपवाद बढ़ाएं "लॉगर प्रारंभ नहीं हुआ है" और इसे निष्पादित न करें)?
किसी भी मदद की सराहना की।
उपयोगकर्ताओं को इस सवाल से पूछने का एक तरीका यह है कि एएसपी.नेट एमवीसी जैसे ढांचे को एक्शनफिल्टरएट्रिब्यूट जैसी चीजों में विशेषताओं के लिए हुक जोड़ते हैं, ताकि वे कुछ करने लगे। यह लोगों को सामान्य गुणों को अधिक सक्रिय होने की कोशिश करने के लिए प्रोत्साहित करता है। –