我是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>()));
有人可以帮助我吗?
谢谢你, 菲利普