【问题标题】:Injecting new constructor parameters every time a type is resolved using unity每次使用统一解析类型时注入新的构造函数参数
【发布时间】:2011-03-04 00:29:38
【问题描述】:

我最近遇到了一个问题,我希望每次解决请求的类型时都将新类型注入其中。

我要注册类型的当前代码是

container.RegisterType<IFirstT, FirstT>();

container.RegisterType<ISecondT, SecondT>();

container.RegisterType<IInjectableT, InjectableT>()
    .Configure<InjectedMembers>()
    .ConfigureInjectionFor<InjectableT>(
          new InjectionConstructor(
                  container.Resolve<IFirstT>(),
                  container.Resolve<ISecondT>(),
           )
    );

我现在意识到每次解析 IInjectableT 时都使用相同的注入构造函数。

InjectionConstructor 是否有可能每次都统一创建新的依赖关系?

我意识到我可以解决 InjectableT 的构造函数内部的依赖关系并实现相同的目标,但是我打算让 IOC 控制这种类型的行为并选择是否使用新实例应该注入或将现有的传递给它。

【问题讨论】:

  • 刚刚发现如果我在 InjectionConstructor 中使用 typeOf(T) 而不是 container.Resolve() 我会得到我想要的结果
  • 如果您已经解决了这个问题,您应该: 1. 提供一个真实的答案并接受它,以便更容易看到这个问题已经得到回答。 2. 删除问题。
  • 虽然它解决了我的问题,但我想要最好的解决方案。我不确定我的答案是最正确的还是只是一种变通方法。

标签: .net dependency-injection inversion-of-control unity-container


【解决方案1】:

你应该使用 ResolvedParameter:

container.RegisterType<IInjectableT, InjectableT>(
          new InjectionConstructor(
                  new ResolvedParameter<IFirstT>(),
                  new ResolvedParameter<ISecondT>()
           )
    );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多