1

我有以下注册码:

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。

4

1 回答 1

3

我会保持简单。如果它是可配置的,请将其放入配置(web.config / app.config)中,然后使用加载 IDConfigurationManager.AppSettings["shipmentDialogToUse"];

还要记住,流畅的注册 API 并不是注册的全部和最终目的。XML 仍然有其适合工作的工具的时间和地点。

于 2009-07-11T03:19:04.253 回答