Castle Windsor:FromAssembly目录 - 如何从多个目录添加?

时间:2014-03-25 19:23:21

标签: c# castle-windsor

请考虑使用以下注册码:

container.Install(FromAssembly.InDirectory(new AssemblyFilter(AppDomain.CurrentDomain.BaseDirectory)),
            FromAssembly.InDirectory(new AssemblyFilter(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Jobs"))));

这是我做的一堆注册中最简单的一行,我从基本目录和" Jobs"中选择DLL。子目录。用于合并两个汇编过滤器的语法(如果有的话)是什么?因为我显然不想复制注册码....而且注册量越大越好。

我想过尝试自己编写一个小类来完成它,但是所有函数都将AssemblyFilter作为参数而不是IAssemblyProvider?所以不要去那里.....

1 个答案:

答案 0 :(得分:1)

我不知道Windsor对此的任何支持,但为了防止重复注册,我总是使用directory参数将注册提取到helper函数中。例如

static BasedOnDescriptor Connectors(string directory)
{
    return Classes.
        FromAssemblyInDirectory(new AssemblyFilter(directory)).
        BasedOn<IConnector>().
        LifestyleTransient().
        ConfigureDiagnostics();
}

然后将其注册为:

container.Register(
    Connectors("Connectors"),
    Connectors("."));