【问题标题】:Castle Windsor - Value Injection温莎城堡 - 价值注入
【发布时间】:2011-02-11 11:51:27
【问题描述】:

Castle Windsor 可以进行价值注入吗?

例如,假设我有一个 Employee 的模型对象,它的属性希望自动映射到描述 MVC 视图的接口。

我想要一种方法,让 Employee.FirstName 在我的模型数据更改时自动设置为 IEmployeeView.FirstName。

现在我正在使用ValueInjecter,但如果 Windsor 可以做到,我想放弃对程序集的依赖。 (我已经将 Windsor 用于 IoC 和其他 AOP 的东西)

【问题讨论】:

  • 我还想评论一下,当数据发生变化时,我只使用 ValueInjector 来设置视图界面上的属性。当温莎找到不同的服务时,这不会发生。如果需要,我可以发布一个控制器示例。
  • 我有时不直接使用 ValueInjecter 但有 IBuilder 接口和实现,这一切都由 Windsor 解决,我在这里使用这种技术:prodinner.codeplex.com

标签: c# .net castle-windsor


【解决方案1】:

使用 Windsor(或任何其他 IoC 容器)或许可以做到这一点,但 IoC 容器更适合管理服务,而不是数据容器。如果您尝试这样管理数据,您可能迟早会陷入服务定位器陷阱。

ValueInjecter 的适当替代品是AutoMapper

【讨论】:

  • 我只知道他们有一个用于自动接线事件的设施:castleproject.org/container/facilities/v1rc3/eventwiring/… 我想他们可能有类似的属性。 AutoMapper 仍然是另一个程序集,我更喜欢 ValueInjecter,因为它看起来更简单。
  • Windsor 似乎没有我需要的值注入器功能(有意义 b/c 它与 IoC 无关)。如果一段时间没有人发帖,我会把你标记为答案。
  • ValueInjecter 比 AutoMapper 更容易使用。更少的设置。您可以在需要时根据需要对其进行自定义。
【解决方案2】:

您应该查看 MEF (http://mef.codeplex.com/)。它内置于 .NET 4.0 中。

【讨论】:

  • 我使用过 MEF,但了解到它的功能比 Castle Windsor 少。 MEF 是否具有我需要的这种“价值注入”功能?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多