gpt4 book ai didi

c# - 什么是 CaSTLe Windsor,我为什么要关心它?

转载 作者:IT王子 更新时间:2023-10-29 03:30:03 25 4
gpt4 key购买 nike

我是一名长期的 Windows 开发人员,在 win32 和早期的 COM 方面初露锋芒。自 2001 年以来,我一直在使用 .NET,因此我非常精通 C# 和 CLR。在我开始参与 Stack Overflow 之前,我从未听说过 CaSTLe Windsor。我已阅读 CaSTLe Windsor“入门”指南,但没有点击。

教这只老狗新技巧,并告诉我为什么我应该将 CaSTLe Windsor 集成到我的企业应用程序中。

最佳答案

CaSTLe Windsor 是一种反转控制工具。还有其他类似的。

它可以为您提供具有预构建和预连接依赖项的对象。 通过反射和配置而不是“new”运算符创建的整个对象图。

从这里开始:http://tech.groups.yahoo.com/group/altdotnet/message/10434


假设您有一个电子邮件发送类。电子邮件发件人。假设您有另一个类 WorkflowStepper。在 WorkflowStepper 中,您需要使用 EmailSender。

你总是可以说 new EmailSender().Send(emailMessage);

但是-使用new - 创建一个很难改变的紧密耦合。 (毕竟这是一个人为的小例子)

如果不是在 WorkflowStepper 中更新这个坏男孩,而是将它传递给构造函数呢?

因此调用它的人必须重新启动 EmailSender。

new WorkflowStepper(emailSender).Step()

想象一下,您有数百个这样的小类,它们只负责一个职责 (google SRP)..并且您在 WorkflowStepper 中使用了其中的几个:

new WorkflowStepper(emailSender, alertRegistry, databaseConnection).Step()

想象一下,不用担心 EmailSender 的细节当你写 WorkflowStepperAlertRegistry

您只是担心与您合作的问题。

想象一下对象和依赖项的整个图(树)在运行时连接起来,这样当您这样做时:

WorkflowStepper stepper = Container.Get<WorkflowStepper>();

你得到了真正的交易 WorkflowStepper所有依赖项都会自动填充到您需要的位置。

没有new

它只是发生 - 因为它知道什么需要什么。

而且您可以通过设计更好的 DRY 代码以可测试和可重复的方式编写更少的缺陷。

关于c# - 什么是 CaSTLe Windsor,我为什么要关心它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/124871/

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