मैं log4net उपयोग कर रहा हूँ, और हम अपने कोड में इस का एक बहुत कुछ है:कक्षा सजावटी स्थिर सदस्य घोषित करने के लिए (उदाहरण के लिए, log4net के लिए)?
public class Foo {
private static readonly ILog log = LogManager.GetLogger(typeof(Foo));
....
}
एक नकारात्मक पक्ष यह मतलब है कि हम सब कुछ खत्म हो यह 10 शब्द खंड को पेस्ट करते है, और हर अब और फिर किसी को कक्षा का नाम बदलने के लिए भूल जाता है।
public class Foo {
private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
...
}
क्या यह संभव है इस परिभाषित करने के लिए एक डेकोरेटर लिखने के लिए: log4net FAQ भी इस विकल्प संभावना है, जो और भी अधिक वर्बोज़ है का उल्लेख है? मैं वास्तव में बस कहने के लिए करना चाहते हैं:
[LogMe] // or perhaps: [LogMe("log")]
public class Foo {
...
}
मैं अन्य भाषाओं में समान कार्य कर लेते हैं, लेकिन कभी नहीं की तरह सी # एक स्थिर संकलित भाषा। क्या मैं कक्षा के सदस्यों को सजावटी से परिभाषित कर सकता हूं?
संपादित करें: हे। मैं एक लिस्प प्रोग्रामर हूं। मैं भाषाओं को स्विच करने के सुझावों की सराहना करता हूं, लेकिन वास्तव में, अगर मैं बेहतर मेटाप्रोग्रामिंग क्षमताओं के लिए भाषाएं स्विच करने जा रहा था, तो मैं इसके बारे में आधा assed होने की बजाय Lisp के लिए सभी तरह से जाना होगा। दुर्भाग्य से एक अलग भाषा का उपयोग इस परियोजना पर एक विकल्प नहीं है।
यह सच है, और मैं गलत टाइप करता हूं। फिर भी, मुझे लगता है कि मैं किसी तरह के वैश्विक प्रारंभिक हुक की उम्मीद कर रहा था जिसका उपयोग सदस्यों में गुणों को रूपांतरित करने के लिए किया जा सकता था। – Ken