Castle Windsor注册多种类型的基础接口?

时间:2016-04-26 14:52:38

标签: c# castle-windsor

我知道如何使用Autofac,而不是使用Castle。

public interface IAmBaseInterface {}
public interface IAmInterface : IAmBaseInterface {...}
public class AmClass : IAmInterface {...}

我想使用IAmBaseInterface注册实现AmClass(和任何其他实现)。这可能吗? 我尝试了以下但没有注册类型。

container.Register(Classes.FromThisAssembly().BasedOn<IAmBaseInterface>()
    .WithServiceAllInterfaces();

尝试过这与AutoFac类似,但没有成功。

container.Register(Classes.FromThisAssembly()
    .Where(t => typeof(IAmBaseInterface).IsAssignableFrom(t)).WithService.AllInterfaces();

1 个答案:

答案 0 :(得分:0)

我意识到我在代码中使用了Classes.From(Type [] ...),而不是像示例中的Classes.FromThisAssembly一样。显然,它不会扫描多个程序集以根据实现进行查找。我还发现它不会扫描多个程序集以查找内部实现,但这是一个侧面说明。