如何在运行时替换方法实现?

que*_*rin 4 .net c# aop dynamic-programming dynamic-proxy

我想拥有可以用我自己的自定义属性装饰的属性 getter 和方法,并根据该属性的存在用不同的实现替换方法主体。此外,不同的实现将需要知道赋予自定义属性的构造函数参数,它装饰方法。

这显然可以用 AOP 来完成,比如 PostSharp 或 LinFu,但我想知道是否有一种方法可以做到这一点,而不涉及构建后处理步骤,因为添加这比我更喜欢的项目复杂化。

poi*_*n42 6

有几个框架允许您在运行时动态更改任何方法:

  • 和谐免费和开源(麻省理工学院)!
  • Prig:免费和开源 (MIT),需要 Visual Studio 扩展并在启动器下运行程序,自 2017 年以来未更新。
  • Microsoft Fakes:商业版,包含在 Visual Studio Enterprise(旧版本的高级版和旗舰版)中,但不包括社区版和专业版
  • Telerik JustMock:商业版,提供“精简版”版本
  • Typemock 隔离器:商用