Delphi中的AOP支持
是否可以在Delphi中进行面向方面的编程?我对本地支持以及第三方解决方案感兴趣Delphi中的AOP支持,delphi,aop,Delphi,Aop,是否可以在Delphi中进行面向方面的编程?我对本地支持以及第三方解决方案感兴趣 我没有想用AOP解决的具体问题,只是对研究AOP感兴趣。Delphi更高版本中的ClassHelper允许一些非常有限级别的AOP类型行为。您可以使用类帮助器将行为注入到其他类中,而无需从这些类中降序。它允许重写现有方法,然后可选地调用该现有方法 限制是必须为特定类及其子体声明ClassHelper。此外,一个类只能有一个ClassHelper 这些方法类似于C#中的扩展方法。AOP取决于两件事: 将附加代码注入
我没有想用AOP解决的具体问题,只是对研究AOP感兴趣。Delphi更高版本中的ClassHelper允许一些非常有限级别的AOP类型行为。您可以使用类帮助器将行为注入到其他类中,而无需从这些类中降序。它允许重写现有方法,然后可选地调用该现有方法 限制是必须为特定类及其子体声明ClassHelper。此外,一个类只能有一个ClassHelper
这些方法类似于C#中的扩展方法。AOP取决于两件事:
- 将附加代码注入现有代码单元的能力
- 在应该注入代码的位置设置条件的机制
也可以使用运行时代码插装来实现这一点。它是一些探查器在不修改原始源代码的情况下将计数器和堆栈跟踪注入到运行代码中的一种技术。可以使用类似的技术将横切关注点注入静态编译的可执行文件中。该项目就是一个很好的例子。DSharp库具有AOP:
有关更多信息,请访问: 还可以看看。
它自Delphi 2010起就在RTL中,允许您对类上的所有虚拟方法进行OnBefore、OnAfter等调用。
仅此调用就应该涵盖您需要使用的部分,而不是比运行时编织快得多的编织 对于Delphi prism,现在有现成的AOP支持:AOP也可以使用影子虚拟方法表(VMT)完成,编织并不是唯一的选择。