【发布时间】:2018-05-25 12:22:53
【问题描述】:
我们有一个使用当前日期(使用 Datetime.Now)来计算特定值的应用程序。
我们还需要能够根据不同的日期在服务器上运行这些计算。 不幸的是,这两个明显的选择是不可行的 -
a) 虽然我们有应用程序的代码,但由于政治原因以及其他环境也使用该服务的事实,将无法更改它并注入特定日期和
b) 由于服务器上运行的其他应用程序和进程,我们无法更改系统日期。
我想知道的是:
是否可以拦截对框架的调用(在本例中为 Datetime.Now)并返回特定值? 这可以来自相同的应用程序,也可以不同。不幸的是,我不确定您是否真的可以通过这种方式拦截这些调用,甚至能够识别调用进程。 我意识到你可以使用一些测试框架来做到这一点,但无论如何它们都需要你改变你的代码库。
谢谢
【问题讨论】:
-
你不能使用一个标志来专门为不同于其他环境的环境构建吗?
-
技术上可行,需要 IL 重写器。我认为 PostSharp 可以做到这一点,但并不完全确定。重构代码以便只有一个方法返回 DateTime。当然,Now 是更合乎逻辑的选择。
标签: c# .net datetime system-calls