在 C++ 时代的某个地方,我制作了一个库,它启用了计算历史的字符串表示。具有如下数学表达式:
TScalar Compute(TScalar a, TScalar b, TScalar c)
{
return ( a + b ) * c;
}
我可以渲染它的字符串表示:
r = Compute(VerbalScalar("a", 1), VerbalScalar("b", 2), VerbalScalar("c", 3));
Assert.AreEqual(9, r.Value);
Assert.AreEqual("(a+b)*c==(1+2)*3", r.History );
C++ 运算符重载允许用复杂的自跟踪实体替换简单类型,该实体具有对象发生的一切的内部树表示。
现在我希望对 NET 字符串有同样的可能性,只是我希望看到影响字符串的代码中所有位置的堆栈跟踪,而不是变量名。
我希望它可以与现有代码和现有编译程序集一起使用。
此外,我希望所有这些都连接到 Visual Studio 调试器中,这样我就可以设置一个断点,并查看字符串发生的所有事情。
哪种技术会允许这种事情发生?
我知道这听起来像是一个乌托邦,但我认为 Visual Studio 代码覆盖工具在检测程序集时实际上做了同样的工作。