gpt4 book ai didi

c# - 将 DIY 依赖注入(inject)与面向方面编程相结合

转载 作者:行者123 更新时间:2023-11-30 15:28:08 25 4
gpt4 key购买 nike

对于即将进行的项目,我计划同时使用依赖注入(inject)和面向方面的编程。我将自己实现前者,遵循 DIY dependency injection guide并使用 LOOM.Net对于 AOP 部分。

创建逻辑类和方面类的交织类型的常见模式是

AspectClass aspect = new AspectClass();
LogicClass logic = Weaver.Create<LogicClass>(aspect);

我的直觉是在胶水代码中执行交织,例如对于实现 ILogicA 的类 ConcreteLogicA,它依赖于由 ConcreteLogicB 实现的 ILogicB

class MyInjector
{
...
public ILogicA GetLogicA(AspectClass aspectToInterweave)
{
return Weaver.Create<ConcreteLogicA>(aspectToInterweave, GetLogicB(aspectToInterweave));
}

public ILogicB GetLogicB(AspectClass aspectToInterweave)
{
return Weaver.Create<ConcreteLogicB>(aspectToInterweave);
}
...
}

这是一个可行的解决方案还是偏离轨道。优点是,我不必将我的逻辑与我的方面混合(诚然,这有点像 AOP 的线索),但这样我就在胶水代码中添加了更多的逻辑。

最佳答案

由于您正在开始一个新项目,我建议您更仔细地查看 SOLID软件设计原则,并尝试将它们应用到您的新项目中。当您使用正确的抽象并遵循 SOLID 原则设计应用程序时,几乎没有理由使用 LOOM 和 PostSharp 等代码编织工具。如果您已经不幸地拥有无法轻易更改的遗留代码库,那么这些工具尤其有用。

与其使用代码编织,不如让应用程序的设计引导您。当您使用正确的抽象设计应用程序时,使用装饰器添加横切关注点将很容易。您可以找到使用适当抽象设计的系统示例 herehere .

这些文章描述了如何使用装饰器定义横切关注点。当您以这种方式设计系统时,您可以独立于其余代码测试横切关注点的实现。使用代码编织工具时要困难得多。如果使用正确的抽象,这将很容易。

在过去的几年里,我咨询了几家公司,在那里我教开发人员如何正确应用设计模式,从而提高灵 active 和可维护性。他们的遗留代码库很难实现,但您似乎处于开始新项目的幸运位置。

以此为契机,提高您的设计技能,让您的应用在未来几年保持可维护性。

关于c# - 将 DIY 依赖注入(inject)与面向方面编程相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26274216/

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