2010-07-12 17 views
13

¿Qué configuración necesito para configurar una dependencia de propiedad estática usando el contenedor Windsor?Inyectando una dependencia en una clase estática

Tengo la siguiente clase en este momento y me gustaría que se inyecte la propiedad Logger.

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

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

Aquí está mi configuración, aunque esta instalación parece encontrar automáticamente las propiedades de la instancia no problemáticas, la versión estática no se está configurando.

<facility id="logging" 
      type="Castle.Facilities.Logging.LoggingFacility, Castle.Facilities.Logging" 
      loggingApi="nlog" 
      customLoggerFactory="Castle.Services.Logging.NLogIntegration.NLogFactory" 
      configFile="Configuration/nlog.config" /> 

Respuesta

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

si usted piensa que es feo, es la reacción correcta. La estática y la IoC no se mezclan, al igual que el alcohol y la conducción.

+0

LOL Bien, podría repensar el diseño de mi clase en su lugar –

+2

La única diferencia es que en la mayoría de los lugares hay un nivel máximo permitido de alcohol en la sangre mientras se conduce (aquí es 0.05%). IOC y estática tienen un enfoque de no tolerancia. –

Cuestiones relacionadas