Ceci peut être fait avec un module, par ex.
class InjectPropertiesByDefaultModule : Autofac.Module {
protected override void AttachToComponentRegistration(
IComponentRegistration registration,
IComponentRegistry registry) {
registration.Activating += (s, e) => {
e.Context.InjectProperties(e.Instance);
};
}
}
Puis:
builder.RegisterModule<InjectPropertiesByDefaultModule>();
Je pense que vous pourriez être mal compris la nature true
paramerter à PropertiesAutowired
- il détermine la façon dont les dépendances circulaires sont pris en charge et devrait probablement rester false
. Pour émuler le paramètre true
, vous pouvez attacher à Activated
au lieu de Activating
ci-dessus. Cependant, si possible, utilisez l'injection de constructeur, même pour les dépendances "optionnelles" comme ILog
. Il conduit à des composants plus propres (par exemple, les champs readonly
) et les dépendances sont plus compréhensibles (ils sont tous dans le constructeur, et il n'y a pas de devinettes sur la signification des propriétés individuelles.)
sont des configurations multiples de l'application et dans certaines configurations la dépendance sera vraiment absente.
Même dans ces cas, le motif "Null Object" est généralement meilleur.
Aussi - si vous intégrez Log4Net, jetez un oeil à: http://code.google.com/p/autofac/wiki/Log4NetIntegration :) –
Nic. dans votre code d'où vient "e"? – Simon
Merci Simon - aurait dû être "inscription" - corrigé maintenant. –