У меня есть следующий бит регистрационного кода:
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") ),
Появилось требование, согласно которому в некоторых случаях приложение должно вести себя несколько иначе. Отлично, подумал я, это именно то, для чего я использовал Castle Windsor для начала.
Итак, я написал свои новые компоненты и сначала зарегистрировал их. Например, я реализую IPublishingService по-другому и сначала регистрирую новую реализацию, чтобы она была разрешена по умолчанию, указанной выше. Однако проблема возникает в тех немногих случаях, когда у меня не было другого выбора, кроме как использовать идентификатор для подключения переопределений моих служб. Например, как мне перенаправить ServiceOverride для ShipmentConfirmationDialog, чтобы использовать мою новую реализацию SpecialCaseShipmentConfirmationDialog без изменения приведенного выше кода?
В замке Виндзор есть все виды механизмов, которые я не очень понимаю, например, переадресация и ActAs, которые, я надеюсь, дадут простой ответ.