温莎城堡自动登记

时间:2009-11-18 15:42:19

标签: castle-windsor

我目前有以下注册设置

private static void AddFrameworkComponentsTo(IWindsorContainer container)
{
    container.AddComponent<ITypeConverter, TypeConversionFacade>();
    container.AddComponent<Framework.Conversion.ITypeConverter<string, int>, StringConverter>();
    container.AddComponent<Framework.Conversion.ITypeConverter<string, decimal>, StringConverter>();
    container.AddComponent<Framework.Conversion.ITypeConverter<string, DateTime>, StringConverter>();
}

避免将每个接口注册到同一组件的最简单方法是什么?如您所见,我的“StringConverter”类实现了几个不同的接口,列表可能会增长。

修改 我刚刚意识到上面的内容甚至没有用,因为抱怨关键,所以不得不把它改成下面:

container.AddComponent<Framework.Conversion.ITypeConverter<string, int>, StringConverter>("ITypeConverter<string, int>");
container.AddComponent<Framework.Conversion.ITypeConverter<string, decimal>, StringConverter>("ITypeConverter<string, decimal>");
container.AddComponent<Framework.Conversion.ITypeConverter<string, DateTime>, StringConverter>("ITypeConverter<string, DateTime>");

处理此问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:3)

怎么样:

container.Register(Component.For(typeof(StringConverter).GetInterfaces())
                            .ImplementedBy(typeof(StringConverter)));

有关流畅注册的详细信息,请参阅fluent API wiki