Castle Windsor - 使用InstallerFactory的示例

时间:2012-01-28 06:22:42

标签: castle-windsor

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

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

干杯

1 个答案:

答案 0 :(得分: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
    }
}

这是容器初始化的代码:

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

希望这有帮助!