Найти определенный класс в файле, используя отражение? - PullRequest
1 голос
/ 12 января 2010

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

Ответы [ 3 ]

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

Как то так?

string path = "INSERT PATH HERE";

var assembly = Assembly.LoadFile(path);
foreach (var type in assembly.GetTypes())
{
    Debug.WriteLine(type.Name);

    // do check for type here, depending on how you wish to query
}
1 голос
/ 12 января 2010

Я не уверен, как имя файла будет храниться как часть скомпилированной сборки. Другой вариант заключается в том, что вы можете использовать файл PDB, сгенерированный IDE VS, чтобы получить исходный файл с некоторым расширением.

Вот некоторые внутренности файла pdb.

http://www.informit.com/articles/article.aspx?p=22685

Как только вы сможете проанализировать файл, вы можете использовать символ и посмотреть определение источника.

Я рад знать и другие способы.

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

Если вы хотите найти исходный код для класса, используйте опцию Перейти к определению в Visual Studio.

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

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