我是 DI 容器领域的新手。我目前正在使用温莎城堡,我正在尝试通过命名约定来配置我的容器。这是我正在尝试做的一个例子:
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>()));
有人可以帮助我吗?
谢谢你,菲利普