Я работаю над приложением, которое не обновлялось годами, и я должен обновлять его зависимости. Замок Виндзор должен быть повышен с 2.5.4 до 3.3.0. не После обновления, следующий больше не компилируется:Установить перехватчики на несколько типов сразу
container.Register(
Types.FromThisAssembly().Where(t => Attribute.IsDefined(t, typeof (ServiceBehaviorAttribute)))
.WithService.DefaultInterfaces()
.Configure(c => c.Interceptors(
InterceptorReference.ForType<ServiceInterceptor>(),
InterceptorReference.ForType<LoggingInterceptor>(),
InterceptorReference.ForType<ExceptionInterceptor>()).Anywhere.LifeStyle.Transient));
Ошибка:
Only assignment, call, increment, decrement, await expression, and new object expressions can be used as a statement.
ReSharper пытается помочь путем присвоения переменной:
container.Register(
Types.FromThisAssembly().Where(t => Attribute.IsDefined(t, typeof (ServiceBehaviorAttribute)))
.WithService.DefaultInterfaces()
.Configure(c =>
{
var componentRegistration = c.Interceptors(
InterceptorReference.ForType<ServiceInterceptor>(),
InterceptorReference.ForType<LoggingInterceptor>(),
InterceptorReference.ForType<ExceptionInterceptor>()).Anywhere.LifeStyle.Transient;
componentRegistration;
}));
Это бросает ту же ошибку , Однако.
Я посмотрел высоко и низко, чтобы правильно установить перехватчики на несколько типов одновременно, но все примеры, которые я нашел, либо старые, либо просто устанавливают перехватчики для одного компонента, такие как в this one из документации:
container.Register(
Component.For<ICalcService>()
.Interceptors(InterceptorReference.ForType<ReturnDefaultInterceptor>()).Last,
Component.For<ReturnDefaultInterceptor>()
);
Это не работает, потому что я не могу зарегистрировать каждый компонент в отдельности.
ли что задокументированы в любом месте? Или это должно быть очевидно? –
Нарушение изменений –
https://github.com/castleproject/Windsor/blob/master/BreakingChanges.txt#L244 – stuartd