Получить исходное имя файла или для каждого идентификатора файла, используя Reflection? - PullRequest
0 голосов
/ 12 января 2010

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

Ответы [ 2 ]

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

Сначала я подумал, что это невозможно, но этот парень предложил схему, которая не требует развертывания файлов PDB, но скомпилировал из них базу данных, чтобы получить эту информацию.

Я бы сказал, что для этого вам нужны файлы PDB или, по крайней мере, некоторые данные.

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

Невозможно сделать это с помощью отражения, если вы не украсили свои классы каким-либо образом, чтобы указать их исходный файл. Для этого вам нужно написать простой атрибут, назовем его SourceFileAttribute, а затем вам понадобится какой-то способ убедиться, что ваше оформление было актуальным для каждого класса. Вы можете сделать это полностью вручную, использовать контроль исходного кода для заполнения части имени файла или использовать инструмент, который сделает это во время компиляции, который вставит как атрибут, так и имя файла.

Когда у вас есть этот атрибут, вы можете искать его, используя отражение для выполнения ваших проверок.

Альтернативой может быть использование информации PDB, хотя я ожидаю, что она будет медленнее. Ссылка, приведенная в Ответ Одеда , представляет собой разумный компромисс, чтобы избежать интерпретации PDB во время выполнения (хотя я не согласен с предложением не развертывать PDB в порядке надлежащей процедуры).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...