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

标签 c# .net aop dynamic-programming dynamic-proxy

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

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

最佳答案

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

  • Harmony免费和开源 (MIT)!
  • Prig :免费和开源 (MIT),需要 Visual Studio 扩展并在启动器下运行程序,自 2017 年以来未更新。
  • Microsoft Fakes : 商业版,包含在 Visual Studio Enterprise 中(旧版本的 Premium 和 Ultimate),但不包含在 Community 和 Professional 中
  • Telerik JustMock : 商业版,提供“精简版”
  • Typemock Isolator : 商业

关于c# - 如何在运行时替换方法实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3062830/

相关文章:

c# - 如何用连续值初始化列表<type>?

c# - .Net core 1.1 UseResponseCompression 没有压缩

.net - 可以清除或禁用 .NET MethodInfo 缓存吗?

c# - 在逻辑应用程序中运行时Azure函数404错误

c# - 调试版本中带有垃圾收集的奇怪触发的奇怪错误

aop - 如何为一系列方法定义切点?

c# - AOP预编译时间编织?

java - 获取 Java 类加载引用层次结构

c# - 通过 TFS API 从 Visual Studio Online 获取构建定义

c# - Serial Port ReadLine vs ReadExisting 或如何从串口正确读取数据