Подтвердить что ты не робот

Можно ли получить сводку класса во время выполнения?

Можно ли получить сводку класса во время выполнения на С#? Я хотел бы получить резюме класса через отражение, а затем записать его на консоль. По сводке классов я имею в виду итоговые комментарии перед определением класса, что-то вроде этого:

/// <summary>
/// some description
/// </summary>
class SomeClass
{
}

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

Заранее благодарим за помощь.

4b9b3361

Ответ 1

Я однажды испортил это некоторое время назад и использовал это решение для парней. Работала неплохо:

http://jimblackler.net/blog/?p=49

Ответ 2

Я поддерживаю проект Jolt.NET на CodePlex и реализовал функцию, которая выполняет эту самую задачу. Подробнее читайте в Jolt.

По сути, библиотека позволяет вам программно находить и запрашивать файл комментариев doc XML для сборки, используя типы метаданных в System.Reflection (т.е. MethodInfo, PropertyInfo и т.д.).

Ответ 3

Нет, они не доступны через отражение. См. msdn:

Комментарии XML doc не являются метаданными; они не включены в скомпилированные сборки, и поэтому они не доступный через отражение.

Ответ 4

Вы не можете получить доступ к ним во время выполнения, поскольку они считаются комментариями компилятора.

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

См. Создание настраиваемых атрибутов (Руководство по программированию на С#) для создания атрибутов и Доступ к атрибутам с рефлексией (Руководство по программированию на С#) для доступа во время выполнения.

Пример из MSDN:

Author.cs:

public class Author : System.Attribute
{
    private string name;
    public double version;

    public Author(string name)
    {
        this.name = name;
        version = 1.0;
    }
}

SampleClass.cs:

[Author("H. Ackerman", version = 1.1)]
class SampleClass
{
    // H. Ackerman code goes here...
}

Ответ 5

Вы можете, если испустить файл документации XML. Этот процесс предполагает использование рефлексии для получения всех публичных членов типа, а затем с использованием XPath, чтения документации из сгенерированного XML-документа.

UPDATE: включить XML-документ в вашу dll/exe, просто добавьте его как внедренный ресурс и дважды скомпилируйте, если документация изменится.

Ответ 6

Нет, эти комментарии не включены в сборку сборки.

Visual Studio может создать XML файл в выходной папке (\ bin\your_project.xml), содержащей эти комментарии. Если ваше приложение было распространено с этим файлом xml, вы сможете получить доступ к нему программно.