1

是否可以将包含我们所有接口的程序集的名称传递给 Castle,并让 Castle 自动查找并注册当前目录中包含这些接口的实现的所有程序集?

4

1 回答 1

2

以下代码为我解决了这个问题。如果您发现任何问题,请发表评论。

var InterfacesAssemblyName = /* get assembly name from appSettings */;

if (!string.IsNullOrEmpty(InterfacesAssemblyName))
{
    var interfaces = Assembly.Load(InterfacesAssemblyName).GetTypes().Where(type => type.IsInterface && type.IsPublic).ToList();

    this._container.Register(
        Classes
            .FromAssemblyInDirectory(new AssemblyFilter("bin"))
            .Where(x => x.GetInterfaces().Intersect(interfaces).Any())
            .LifestyleTransient()
            .WithService.DefaultInterfaces());
}
于 2012-07-25T14:05:19.467 回答