SimpleInjector RegisterDecorator方法的Ninject等效项

use*_*105 5 c# ninject simple-injector

我在Simple Injector IoC容器中有以下代码:

container.RegisterDecorator(typeof(ICommandHandler<>),
    typeof(ValidationCommandHandlerDecorator<>));
Run Code Online (Sandbox Code Playgroud)

我需要把它翻译成Ninject等价物.我已经读过Ninject中的Decorator模式是通过这个WhenInjectedInto方法完成的,但整个biding需要像这里的3个参数:

Bind<IRepository>().To<SimpleRepository>
    .WhenInjectedInto<AdvancedRespository>();
Run Code Online (Sandbox Code Playgroud)

Simple Injector中的这个方法只需要2,所以你能告诉我,我在这里缺少什么吗?

tre*_*eze 2

我认为没有与 SimpleInjector 的 RegisterDecorator 功能直接等效的功能。如果我理解正确的话,这定义了每当您请求 ICommandHandler 时,您都会得到一个返回的 ValidationCommandHandlerDecorator,它装饰一些默认的 ICommandHandler。在 Ninject 中,您需要像以前一样执行此操作。至少我不知道直接提供该机制的任何功能或扩展。

另请参阅这个问题 How the binding are done withdecorators using Ninject?