我正在创建验证装饰器来处理我的指令,但是我在使用 Simple Injector DI 容器注册类型时遇到了困难。
情况如下:
- 目前只有一个验证器可以应用于所有的指令,即
根据 Simple Injector 文档,在这种情况下,应该创建一个
接下来需要配置 Simple Injector 容器。我的当前配置如下:
情况如下:
- 目前只有一个验证器可以应用于所有的指令,即
DataAnnotationsCommandValidator<TCommand>
。
- 我还有一些特定指令所需的验证器。例如,CreateRefreshTokenCommandValidator
实现了 ICommandValidator<CreateRefreshTokenCommand>
接口。根据 Simple Injector 文档,在这种情况下,应该创建一个
CompositeCommandValidator
。我按照文档中提到的实现方式进行了操作,也就是说,我的 ValidationCommandHandlerDecorator
仍然依赖于 ICommandValidator<TCommand>
而不是 IEnumerable
。接下来需要配置 Simple Injector 容器。我的当前配置如下:
_container.RegisterManyForOpenGeneric(
typeof(ICommandValidator<>),
_container.RegisterAll,
typeof (ICommandValidator<>).Assembly);
_container.RegisterAllOpenGeneric(
typeof(ICommandValidator<>),
typeof(DataAnnotationsCommandValidator<>));
_container.RegisterSingleOpenGeneric(
typeof(ICommandValidator<>),
typeof(CompositeCommandValidator<>));
然而,当我调试应用程序时,只有特定的验证器被注入到CompositeCommandValidator
中(我没有DataAnnotationsCommandValidator
)。我尝试了几种不同的配置,但都无济于事。我应该如何配置Simple Injector才能获得正确的行为?