等效于SimpleInjector的RegisterDecorator方法

本文关键字:RegisterDecorator 方法 SimpleInjector | 更新日期: 2023-09-27 18:11:12

我在简单注入器IoC容器中有以下代码:

container.RegisterDecorator(typeof(ICommandHandler<>),
    typeof(ValidationCommandHandlerDecorator<>));

我需要将其转换为Ninject等效。我读到过Ninject中的Decorator模式是通过WhenInjectedInto方法完成的,但整个隐藏需要3个参数,就像这样:

Bind<IRepository>().To<SimpleRepository>
    .WhenInjectedInto<AdvancedRespository>();

这个方法在简单注入器只需要2,所以你能告诉我,请我在这里错过了什么?

等效于SimpleInjector的RegisterDecorator方法

我认为SimpleInjector的RegisterDecorator功能没有直接的等号。如果我理解正确,这定义了每当你请求一个ICommandHandler,你会得到一个ValidationCommandHandlerDecorator返回装饰一些默认的ICommandHandler。在Ninject中,你需要像你已经做过的那样做。至少我不知道有任何功能或扩展直接提供这种机制。

参见这个问题如何使用Ninject与装饰器绑定?

在阅读了简单注入器中的装饰器之后,我真的看不出它与普通注入有什么不同。你为什么就不能这么做呢?

kernel.Bind(typeof(ICommandHandler<>))()
      .To(typeof(ValidationCommandHandlerDecorator<>))

如果您需要根据对象的类型控制几个类型的注入,那么您将使用.WhenInjectedInto()

相关文章:
  • 没有找到相关文章