Есть ли способ программно получить исходный файл и номер строки произвольного MemberInfo? - PullRequest
2 голосов
/ 26 января 2010

Я пишу инструмент анализа кода, который использует рефлексию для проверки конкретной базы кода. Когда я сталкиваюсь с интересующим типом или элементом, я хотел бы загрузить символы и извлечь исходный файл и номер строки, где определен элемент или тип. Это возможно? Если да, то как?

class SourceInfo
{
    public static SourceInfo GetFrom(MemberInfo member)
    {
        // What do I do here??
        throw new NotImplementedException();
    }

    public static SourceInfo GetFrom(Type member)
    {
        // What do I do here??
        throw new NotImplementedException();
    }

    public string SourceFilePath { get; private set; }
    public int LineNumber { get; private set; }
}

Ответы [ 3 ]

3 голосов
/ 26 января 2010

Доступные API символов перечислены в этой статье блога . Я думаю, что обертки MDbg - ваш лучший выбор для управляемого кода. Я только попробовал DIA SDK и не был в восторге.

1 голос
/ 26 января 2010

В этой статье codeproject содержится некоторая информация о получении информации из файла PDB.

0 голосов
/ 26 января 2010

Нет, вы не можете сделать это с помощью отражения. Для этого вам необходим связанный файл базы данных программы с использованием Symbol API .

...