Castle Windsor - 使用InstallerFactory的示例

Sam*_*l G 4 castle-windsor

有没有人有一些示例代码使用城堡windsor InstallerFactory来订购安装程序的安装?

似乎无法在文档或其他地方找到它.

干杯

Mon*_*der 8

您只能InstallerFactoryFromAssembly班级一起使用.

使用FromAssembly时,不应该依赖安装程序实例化/安装的顺序.这是非确定性的,这意味着你永远不知道它会是什么.如果需要按特定顺序安装安装程序,请使用InstallerFactory.

除此之外,您应该从InstallerFactory类继承并应用有关特定安装程序类型实例化的自己的规则.

所有上述方法都有一个带有InstallerFactory实例的重载.大多数时候你不会关心它,事情就会奏效.但是,如果您需要从程序集中更严格地控​​制安装程序(影响它们的安装顺序,更改它们的实例化方式或只安装一些,而不是全部安装),您可以从此类继承并提供自己的实现实现这些目标.

示例类可能如下所示:

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

这是容器初始化的代码:

IWindsorContainer container = new WindsorContainer().Install(FromAssembly.This(new CustomInstallerFactory()));
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!