如何在使用AllTypes时命名windsor注册

时间:2011-08-04 15:13:16

标签: castle-windsor

我有一个IWindsorInstaller类,我需要自动命名所有注册

public class ImportInstaller : IWindsorInstaller
{
    public void Install(IWindsorContainer container, IConfigurationStore store)
    {
        container.Register(
            AllTypes
                .FromAssemblyNamed("ByBox.Import")
                .Where(type => type.Name.EndsWith("Importer") && type.IsClass && type.IsPublic)
            );
    }
}

我希望这个名字是类名。

所以,相当于为每个班级做这个......

container.Register(
    Component.For<IMyImporter>()
        .ImplementedBy<MyImporter>()
        .Named("MyImporter")
);

有办法吗?

1 个答案:

答案 0 :(得分:2)

...不确定

    container.Register(
        AllTypes
            .FromAssemblyNamed("ByBox.Import")
            .Where(type => type.Name.EndsWith("Importer") && type.IsClass && type.IsPublic)
            .Configure(r => r.Named(r.Implementation.Name));
        );