Autofac का उपयोग करना, मैं संपत्ति इंजेक्शन का उपयोग कर, निम्नलिखित कोड का उपयोग कर एक अंतरफलक के खिलाफ हल करने एक वर्ग रजिस्टर कर सकते हैं:कैसे एक निर्माता पैरामीटर के रूप में निर्भरता नाम सुई
builder.RegisterType<Log4NetAdapter>()
.As<ILogger>()
.PropertiesAutowired()
.InstancePerDependency();
लेकिन, मेरा Log4NetAdapter
वर्ग एक निर्माता पैरामीटर है जिसके लिए कॉलिंग क्लास का नाम आवश्यक है। इस तरह, मैं कॉलिंग क्लास के नाम के आधार पर ईवेंट लॉग कर सकता हूं।
public class Log4NetAdapter : ILogger
{
private readonly ILog _logger;
public Log4NetAdapter(string logName)
{
_logger = LogManager.GetLogger(logName);
}
...
}
मैं नाम (अर्थात typeof(dependency).Name
) संपत्ति इंजेक्शन वर्ग 'निर्माता में निर्भरता के देखते हुए कि प्रत्येक निर्भरता का अपना Log4NetAdapter
उदाहरण होगा कैसे इंजेक्षन कर सकते हैं?
जब आप लकड़हारा यह अक्सर आवेदन में बहुत अधिक प्रवेश कर का एक संकेत है में वर्ग के नाम की जरूरत है। अपने आवेदन के डिजाइन पर एक अच्छा नज़र डालने पर विचार करें। [यह SO उत्तर विस्तार से चला जाता है] (http://stackoverflow.com/a/9915056/264697) बहुत अधिक लॉगिंग के बारे में। – Steven
@Steven यह एक अच्छा लेख है और हां, मुझे लॉग इन करने के तरीके को संशोधित करने की संभावना है। – Digbyswift