请考虑使用以下注册码:
container.Install(FromAssembly.InDirectory(new AssemblyFilter(AppDomain.CurrentDomain.BaseDirectory)),
FromAssembly.InDirectory(new AssemblyFilter(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Jobs"))));
这是我做的一堆注册中最简单的一行,我从基本目录和" Jobs"中选择DLL。子目录。用于合并两个汇编过滤器的语法(如果有的话)是什么?因为我显然不想复制注册码....而且注册量越大越好。
我想过尝试自己编写一个小类来完成它,但是所有函数都将AssemblyFilter作为参数而不是IAssemblyProvider?所以不要去那里.....
答案 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("."));