在Castle Windsor注册复杂的命名约定

时间:2013-07-23 13:20:24

标签: c# dependency-injection naming-conventions castle-windsor auto-registration

我是DI容器世界的新手。我目前正在使用Windsor Castle,我正在尝试通过命名约定配置我的容器。这是我正在尝试做的一个例子:

interface INode{}
interface INodeType1: INode{}
interface INodeType2: INode{}

interface INodeConverter{}
class NodeType1Converter:INodeConverter{}
class NodeType2Converter:INodeConverter{}

这是一个应用程序,用户可以通过拖放不同类型的节点来构建流程图。在某一点上,这些节点必须以某种格式转换,每个节点都有自己特定的转换方式。

当我解析INodeType1时,我想收到NodeType1Converter的一个实例。当INodeType2 - > NodeType2Converter,...

我尝试使用WithService.Select注册它但没有成功:

container.Register(Classes.FromThisAssembly()
                .InSameNamespaceAs<INodeConverter>()
                .WithService.Select((type, types) => type.Name.EndsWith("Converter")  && type.Name .StartsWith ("don't know what to do here?!?")
                                                    ? new[] { type.BaseType }
                                                    : Enumerable.Empty<Type>()));

有人可以帮助我吗?

谢谢你, 菲利普

0 个答案:

没有答案