У меня есть следующие интерфейсы:
public interface ICommandHandler<T>
{
void Handle(T command);
}
public class TransactionalCommandHandlerDecorator<T> : ICommandHandler<T>
{
private readonly ICommandHandler<T> _handler;
public TransactionalCommandHandlerDecorator(ICommandHandler<T> handler)
{
_handler = handler;
}
public void Handle(T command)
{
}
}
, и у меня есть конкретный класс, который реализует два обработчика команд:
public class Handler : ICommandHandler<CreateLocation>
,ICommandHandler<ModifyLocation>
{
public void Handle(CreateLocation command)
{
}
public void Handle(ModifyLocation command)
{
}
}
, и у меня есть регистрация следующим образом:
builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly())
.AsClosedTypesOf(typeof(ICommandHandler<>))
.InstancePerLifetimeScope();
builder.RegisterGenericDecorator(typeof(TransactionalCommandHandlerDecorator<>), typeof(ICommandHandler<>));
Преобразование класса «Обработчик» приводит к тому, что autofac циклически разрешает декоратор и обработчик в бесконечном цикле, что вызывает исключение StackOverflowException.если я изменю «обработчик» для реализации только одного интерфейса, то он будет работать без проблем.
есть идеи, как это исправить?