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

Вы можете безопасно использовать встроенный JavaScriptSerializer без ссылки на дополнительные сторонние библиотеки:

var ser = new System.Web.Script.Serialization.JavaScriptSerializer();
ser.DeserializeObject(json);
17
задан empi 26 February 2009 в 19:54
поделиться

6 ответов

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

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

6
ответ дан 30 November 2019 в 14:01
поделиться

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

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

3
ответ дан 30 November 2019 в 14:01
поделиться

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

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

См. Создавать Пользовательские атрибуты (Руководство по программированию C#) для создания атрибута и Атрибуты Доступа С Отражением (Руководство по программированию C#) для доступа во время выполнения.

Пример из 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's code goes here...
}
3
ответ дан 30 November 2019 в 14:01
поделиться

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

ОБНОВЛЕНИЕ: для включения документа XML в dll/exe просто добавьте его как встроенный ресурс и скомпилируйте дважды, если документация изменяется.

1
ответ дан 30 November 2019 в 14:01
поделиться

Нет, те комментарии не включены в Ваш скомпилированный блок.

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

0
ответ дан 30 November 2019 в 14:01
поделиться

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

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

5
ответ дан 30 November 2019 в 14:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: