【问题标题】:Programatic property injection with Microsoft Unity使用 Microsoft Unity 进行编程属性注入
【发布时间】:2009-07-07 11:33:33
【问题描述】:

我在我的解决方案中使用构造函数注入,但是这个类有一个属性,我不想在构造函数中传递我具有不变依赖项的属性。

假设我有一个 ILogger,它有一个我想设置的 FileName 属性,同时仍然让它在构造函数中设置依赖关系。 我如何去注册类型,同时传递默认连接字符串。

我希望有一种简单的方法来做到这一点 - 最好不要用属性装饰属性,但如果使用属性更容易设置,我想这很酷:)

所以问题是,我如何在也使用构造函数注入的对象上注入属性值 - 使用 Unity。

更新:我在标题中提到了它,但我忘记在正文中详细说明 - 我想手动设置这些依赖项(在代码中)而不是在配置文件中。

【问题讨论】:

    标签: inversion-of-control unity-container property-injection


    【解决方案1】:

    好吧,我想这有助于提出这个问题,我发现 - 在这里。

    container.Configure<InjectedMembers>().ConfigureInjectionFor<BasicLogger>(
      new InjectionProperty("FileName", @"C:\test.log")
    );
    

    【讨论】:

      【解决方案2】:

      如果您要注入属性,则必须使用 [Dependency] 或手动注入该依赖项。

      【讨论】:

      • 是的,我没有说得很清楚 - 但我确实想手动完成;)
      【解决方案3】:

      您通常希望注入一个 IConfiguration 接口。这可能有一个您可以读取的 LogFile 属性。

      配置实现通常只是一个简单的包装器,用于从配置文件中读取项目。

      【讨论】:

      • 您说得很好,但我们正努力使其尽可能简单,而所有这些特定的实现需要一个文件名。
      猜你喜欢
      • 2016-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多