Это можно сделать с помощью модуля, например,
class InjectPropertiesByDefaultModule : Autofac.Module {
protected override void AttachToComponentRegistration(
IComponentRegistration registration,
IComponentRegistry registry) {
registration.Activating += (s, e) => {
e.Context.InjectProperties(e.Instance);
};
}
}
Затем:
builder.RegisterModule<InjectPropertiesByDefaultModule>();
Я думаю, вы, возможно, неправильно поняли параметр true
для PropertiesAutowired
- он определяеткак циклические зависимости поддерживаются и, вероятно, должны оставаться false
.Чтобы эмулировать настройку true
, вы можете присоединиться к Activated
вместо Activating
выше.
Однако, если это вообще возможно, используйте инъекцию конструктора даже для «необязательных» зависимостей, таких как ILog
.Это приводит к более чистым компонентам (например, поля могут быть сделаны readonly
), а зависимости более понятны (все они в конструкторе, и нет смысла гадать о значении отдельных свойств.)
Рассмотрите только использованиевнедрение свойства, когда существует несколько конфигураций приложения, а в некоторых конфигурациях зависимость действительно отсутствует.
Даже в этих случаях шаблон «Null Object» обычно лучше подходит.