【发布时间】:2009-07-10 19:41:35
【问题描述】:
我有以下注册码:
Component.For<IPublishingService>().ImplementedBy<UseStoredProcedureToPrintService>(),
Component.For<IConfirmationDialog<AutomatedTransaction>>().ImplementedBy<ShipmentConfirmationDialog>().Named("ShipmentConfirmationDialog"),
Component.For<IConfirmationService<AutomatedTransaction>>().ImplementedBy<SingleTransactionConfirmation>().ServiceOverrides(
ServiceOverride.ForKey("shipmentDialog").Eq("ShipmentConfirmationDialog") ),
提出了一个要求,即在某些情况下,应用程序的行为应该有所不同。太好了,我想,这正是我开始使用温莎城堡的目的。
所以我编写了我的新组件并首先注册它们。例如,我以不同的方式实现 IPublishingService 并首先注册新的实现,以便在上面的默认实现上解析它。但是,在我别无选择只能使用 id 连接我的服务覆盖的少数情况下会出现问题。例如,如何在不修改上述代码的情况下重定向 ShipmentConfirmationDialog 的 ServiceOverride 以使用我的新 SpecialCaseShipmentConfirmationDialog 实现?
温莎城堡中有各种我不太了解的机制,比如转发和我希望能提供简单答案的 ActAs。
【问题讨论】:
标签: inversion-of-control castle-windsor registration