8

मेरे पास लॉगिंग सेवा के लिए मेरी कक्षाओं पर एक संपत्ति है।मैं संपत्ति को स्वचालित रूप से इंजेक्ट करने के लिए कैसल विंडसर कैसे प्राप्त कर सकता हूं?

private ILogger logger = NullLogger.Instance; 
public ILogger Logger 
{ 
    get { return logger; } 
    set { logger = value; } 
} 

और मैं अपने घटक पंजीकरण में इस है:

container.AddFacility<LoggingFacility>(x => new LoggingFacility(LoggerImplementation.Log4net)); 

हालांकि, विंडसर लॉगर इंजेक्षन प्रतीत नहीं होता है - मैं कुछ याद आ रही है?

उत्तर

14

AddFacility के लिए lambda पैरामीटर वास्तव में एक सृजन कॉलबैक है (यह सुविधा बनने पर इसे कहा जाता है), कारखाने नहीं।

उपयोग इस बजाय:

container.AddFacility("logging", new LoggingFacility(LoggerImplementation.Log4net, "path_to_log4net.config")); 

BTW विंडसर स्वचालित रूप से संपत्ति निर्भरता इंजेक्शन जब भी यह कर सकते हैं।

+3

धन्यवाद, आप मेरा व्यक्तिगत विंडसर सहायक बनना शुरू कर रहे हैं :-) –

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