Замок Виндзор - Пример использования InstallerFactory - PullRequest
4 голосов
/ 28 января 2012

Есть ли у кого-нибудь пример кода использования Castle InstallerFactory для установки инсталляторов?

Не могу найти его в документации или где-либо еще.

Приветствия

1 Ответ

8 голосов
/ 31 января 2012

Вы можете использовать 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()));

Надеюсь, это поможет!

...