gpt4 book ai didi

c# - CaSTLe Windsor 组件注册上下文中的 "ForwardedTypes"是什么?

转载 作者:可可西里 更新时间:2023-11-01 03:09:29 26 4
gpt4 key购买 nike

正如题主所说,真的!他们做什么?

最佳答案

转发类型允许您通过单个实现实现多个服务,举一个具体的例子,我们有两个接口(interface)用于处理某种树节点:

public interface INodeAlterationProvider { ... }
public interface IChildNodeListProvider { ... }

各种组件都依赖于其中一个或两个接口(interface)。然而,在实现这些接口(interface)中的每一个时,您会发现它们有很多共享功能,并且希望将这些实现与其他一些功能合并到一个类中,例如:

public class NodeFactory : INodeAlterationProvider, IChildNodeListProvider { ... }

您可以注册两个 NodeFactory 实例,一个用于它们实现的每个服务:

container.Register(Component.For<INodeAlterationProvider>().ImplementedBy<NodeFactory>());
container.Register(Component.For<IChildNodeListProvider>().ImplementedBy<NodeFactory>());

但这可能意味着存在两个 NodeFactory 单例实例——这并不理想,尤其是在构建成本高昂的情况下——并且会使调试等更难理解,尤其是在实现了两个以上的接口(interface)时。

这是转发类型介入的地方,允许您将多个服务转发到同一实现,这是一个这样做的例子:

container.Register(Component.For<INodeAlterationProvider>().Forward<IChildNodeListProvider>().ImplementedBy<NodeFactory>());

注意:此处显示的组件注册码仅在trunk上可用。

关于c# - CaSTLe Windsor 组件注册上下文中的 "ForwardedTypes"是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/197274/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com