Где-то в эпоху 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, чтобы я мог установить точку останова и увидеть все, что произошло со строкой.
Какая технология позволила бы подобные вещи?
Я знаю, что это звучит как утопия, но я думаю, что инструменты визуального покрытия кода студии фактически выполняют ту же самую работу, обрабатывая сборки.