我目前有以下注册设置
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>");
处理此问题的最佳方法是什么?
答案 0 :(得分:3)
怎么样:
container.Register(Component.For(typeof(StringConverter).GetInterfaces())
.ImplementedBy(typeof(StringConverter)));
有关流畅注册的详细信息,请参阅fluent API wiki。