1

我是 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>()));

有人可以帮助我吗?

谢谢你,菲利普

4

0 回答 0