在 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 代码覆盖工具在检测程序集时实际上做了同样的工作。
最佳答案
好吧,有多种技术可以在这里受益。
一种是建立你自己的日志系统来跟踪你寻找的信息。该信息列表可以通过每个计算函数传递,或者“类范围”变量可以包含该信息。这是一种更多的自己动手的方法。它的水平不低。
如果你想深入挖掘字符串类,有一种方法可以反射字符串函数。这个反射器系统声称它可以与调试系统连接(尽管我没有尝试过)。您可以尝试使用 TestDriven.NET和 .NET Reflector .此外,如果您使用 Visual Studio 2008+ Professional 或更高版本,您应该能够直接调试到 .NET 框架本身。这将允许您查看字符串发生的情况。
如果我误解了您正在寻找的问题或信息,请告诉我。我会尽我所能提供帮助。
关于.net - 检测字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2836186/