Как разбить строку трассировки стека на пространство имен, класс, файл метода и номер строки?

Трассировки стека C # принимают следующий вид :

   at Foo.Core.Test.FinalMethod(Doh doh) in C:\Projects\src\Core.Tests\Test.cs:line 21
   at Foo.Core.Test.AnotherMethod(Bar bar)
   at Foo.Core.Test.AMethod() in C:\Projects\src\Core.Tests\Test.cs:line 6
   at Foo.Core.Test.<>c__DisplayClass7.<SomeAnonDelegate>b__6(Object _) in C:\Projects\src\Core.Tests\Test.cs:line 35

Как я могу получить пространство имен, класс, метод, файл и номер строки из каждой строки?

  • Существуют ли какие-либо классы для этого?
  • Если нет, то какой подход лучше всего?
  • Регулярное выражение? Как мне с жадностью сопоставить пространство имен, но оставить класс и метод?
  • Пользовательский синтаксический анализатор?

Был бы признателен за некоторые идеи и предложения.

11
задан chillitom 28 February 2011 в 22:09
поделиться