Я пытаюсь построить архитектуру плагина для asp.net MVC, которая позволила бы контролировать Суперконтроллеры.В замке Виндзор, как я могу переопределить тип, зарегистрированный в FromThisAssembly()
На моем App_Start() У меня есть это:
ControllerBuilder.Current.SetControllerFactory(
new WindsorControllerFactory(container));
И немного перед инсталлятором для всех контроллеров внутри Ассамблеи:
public class ControllersInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store) {
container.Register(Classes.FromThisAssembly().BasedOn<IController>().LifestyleTransient());
}
}
Это основано на Windsor Tutorial.
Теперь, на моем плагине или модуле, я хотел бы зарегистрировать новые контроллеры и иметь возможность переопределять определенные контроллеры, уже зарегистрированные в базовом приложении MVC.
Проблема заключается в том, что при использовании метода регистрации выше не существует способа вызова .Overridable() или .IsDefault(). Как я могу сделать что-то вроде этого:
public void Install(IWindsorContainer container, IConfigurationStore store) {
container.Register(Classes.FromThisAssembly().
BasedOn<IController>().
LifestyleTransient().
IsDefault()); // This does not compile.
В сущности, как переопределить что-то зарегистрированное по типу?
Но есть способ, чтобы переопределить это поведение? – tggm
Можете ли вы объяснить немного больше о том, что будет в вашем плагине? Возможно, измените свой вопрос, чтобы показать весь жизненный цикл исходного состояния, а затем добавить плагины позже? –
Плагин будет содержать контроллеры и представления, чтобы увеличить базовое приложение MVC. – tggm