2012-01-28 4 views

ответ

8

Вы можете использовать только InstallerFactory в сочетании с FromAssembly класса.

При использовании функции FromAssembly вы не должны полагаться на порядок, в котором ваши инсталляторы будут созданы или установлены. Он не является детерминированным, что означает, что вы никогда не знаете, каким он будет. Если вам необходимо установить установщиков в определенном порядке, используйте InstallerFactory.

В дополнение к этому вы должны наследовать класс InstallerFactory и применять свои собственные правила, касающиеся создания экземпляров определенных типов установщика.

Все перечисленные выше методы имеют перегрузку, которая принимает экземпляр InstallerFactory. Большую часть времени вы не будете заботиться об этом, и все будет работать. Однако, если вам нужно иметь более жесткий контроль над установщиками из сборки (порядок воздействия, в котором они установлены, изменить способ их создания или установить только некоторые, а не все), которые вы можете наследовать от этого класса и предоставить свою собственную реализацию достичь этих целей. Класс

образца может выглядеть следующим образом:

public class CustomInstallerFactory : InstallerFactory 
{ 
    public override IEnumerable<Type> Select(IEnumerable<Type> installerTypes) 
    { 
     return installerTypes.Reverse(); // just as an example 
    } 
} 

А вот код для инициализации контейнера:

IWindsorContainer container = new WindsorContainer().Install(FromAssembly.This(new CustomInstallerFactory())); 

Надеется, что это помогает!

+0

Спасибо, очень полезно, так как не удалось найти информацию о кодах в документах Windsor – Raffaeu

Смежные вопросы