Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSharp_Prog_Guide.doc
Скачиваний:
16
Добавлен:
16.11.2019
Размер:
6.22 Mб
Скачать

Комментарии xml-документации

В Visual C# можно создать документацию для кода, включив теги XML в специальные поля комментария в исходном коде непосредственно перед блоком кода, к которому они относятся. Пример.

/// <summary>

/// This class performs an important function.

/// </summary>

public class MyClass{}

При выполнении компиляции с параметром /doc компилятор выполнит поиск всех тегов XML в исходном коде и создаст файл документации XML.

Примечание.

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

Рекомендуемые теги для комментариев документации

Компилятор C# может обрабатывать комментарии документации в коде в XML-файл. Обработка XML-файла для создания документации является деталью, которая должна быть учтена при реализации в узле.

Теги обрабатываются в конструкциях кода, таких как типы и члены типов.

Примечание.

Комментарии документации не могут быть применены к пространству имен.

Компилятор обрабатывает любой тег, который является допустимым тегом XML.

How to: Use the XML Documentation Features

The following sample provides a basic overview of a type that has been documented.

Example

// compile with: /doc:DocFileName.xml

/// <summary>

/// Class level summary documentation goes here.</summary>

/// <remarks>

/// Longer comments can be associated with a type or member

/// through the remarks tag</remarks>

public class TestClass

{

/// <summary>

/// Store for the name property</summary>

private string _name = null;

/// <summary>

/// The class constructor. </summary>

public TestClass()

{

// TODO: Add Constructor Logic here

}

/// <summary>

/// Name property </summary>

/// <value>

/// A value tag is used to describe the property value</value>

public string Name

{

get

{

if (_name == null)

{

throw new System.Exception("Name is null");

}

return _name;

}

}

Использование xml-документации

В следующем примере приводятся общие сведения о документированном типе.

Пример

------

/// <summary>

/// Description for SomeMethod.</summary>

/// <param name="s"> Parameter description for s goes here</param>

/// <seealso cref="System.String">

/// You can use the cref attribute on any tag to reference a type or member

/// and the compiler will check that the reference exists. </seealso>

public void SomeMethod(string s)

{

}

/// <summary>

/// Some other method. </summary>

/// <returns>

/// Return results are described through the returns tag.</returns>

/// <seealso cref="SomeMethod(string)">

/// Notice the use of the cref attribute to reference a specific method </seealso>

public int SomeOtherMethod()

{

return 0;

}

/// <summary>

/// The entry point for the application.

/// </summary>

/// <param name="args"> A list of command line arguments</param>

static int Main(System.String[] args)

{

// TODO: Add code to start application here

return 0;

}

}

-------

// This .xml file was generated with the previous code sample.

<?xml version="1.0"?>

<doc>

<assembly>

<name>xmlsample</name>

</assembly>

<members>

<member name="T:SomeClass">

<summary>

Class level summary documentation goes here.</summary>

<remarks>

Longer comments can be associated with a type or member

through the remarks tag</remarks>

</member>

<member name="F:SomeClass.m_Name">

<summary>

Store for the name property</summary>

</member>

<member name="M:SomeClass.#ctor">

<summary>The class constructor.</summary>

</member>

<member name="M:SomeClass.SomeMethod(System.String)">

<summary>

Description for SomeMethod.</summary>

<param name="s"> Parameter description for s goes here</param>

<seealso cref="T:System.String">

You can use the cref attribute on any tag to reference a type or member

and the compiler will check that the reference exists. </seealso>

</member>

<member name="M:SomeClass.SomeOtherMethod">

<summary>

Some other method. </summary>

<returns>

Return results are described through the returns tag.</returns>

<seealso cref="M:SomeClass.SomeMethod(System.String)">

Notice the use of the cref attribute to reference a specific method </seealso>

</member>

<member name="M:SomeClass.Main(System.String[])">

<summary>

The entry point for the application.

</summary>

<param name="args"> A list of command line arguments</param>

</member>

<member name="P:SomeClass.Name">

<summary>

Name property </summary>

<value>

A value tag is used to describe the property value</value>

</member>

</members>

</doc>

-----

Compiling the Code

To compile the example, type the following command line:

csc XMLsample.cs /doc:XMLsample.xml

This will create the XML file XMLsample.xml, which you can view in your browser or by using the TYPE command.

Robust Programming

XML documentation starts with ///. When you create a new project, the wizards put some starter /// lines in for you. The processing of these comments has some restrictions:

  • The documentation must be well-formed XML. If the XML is not well-formed, a warning is generated and the documentation file will contain a comment that says that an error was encountered.

  • Developers are free to create their own set of tags. There is a recommended set of tags (see the Further Reading section). Some of the recommended tags have special meanings:

    • The <param> tag is used to describe parameters. If used, the compiler will verify that the parameter exists and that all parameters are described in the documentation. If the verification failed, the compiler issues a warning.

    • The cref attribute can be attached to any tag to provide a reference to a code element. The compiler will verify that this code element exists. If the verification failed, the compiler issues a warning. The compiler respects any using statements when it looks for a type described in the cref attribute.

    • The <summary> tag is used by IntelliSense inside Visual Studio to display additional information about a type or member.

Note:

The XML file does not provide full information about the type and members (for example, it does not contain any type information). To get full information about a type or member, the documentation file must be used together with reflection on the actual type or member.