Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Injecting a dependency into a static class

What configuration do I need to setup a static property dependency using Windsor container?

I have the following class at the moment and I would like the Logger property to be injected.

static class StuffDooer 
{
   static ILogger Logger { get; set; }

   static StuffDooer() { Logger = NullLogger.Instance; }
}

Here's my configuration although, this facility seems to automatically find instance properties not problem, the static version is not being set.

<facility id="logging"
          type="Castle.Facilities.Logging.LoggingFacility, Castle.Facilities.Logging"
          loggingApi="nlog"
          customLoggerFactory="Castle.Services.Logging.NLogIntegration.NLogFactory"
          configFile="Configuration/nlog.config" />
like image 358
Razor Avatar asked Jul 12 '10 12:07

Razor


1 Answers

StuffDooer.Logger = container.Resolve<ILoggerFactory>().GetLogger(typeof(StuffDoer));

If you think it's ugly, that is the correct reaction. Statics and and IoC don't mix, same as alcohol and driving.

like image 69
Krzysztof Kozmic Avatar answered Oct 30 '22 05:10

Krzysztof Kozmic