Можно ли добавить дополнительную документацию к существующим методам или классам в C#?

#c# #partial-classes

Вопрос:

Предположим, я разрабатываю библиотеку C#, предназначенную для двух разных платформ (скажем, WinForms и Blazor).

Один из способов структурировать код-это иметь «основной» набор общих файлов, которые являются partial классами, чтобы я мог добавлять код для конкретной платформы в отдельные файлы. Таким образом, в ядре может быть Point.cs файл:

 /// <summary>Class <c>Point</c> models a point in a two-dimensional
/// plane.</summary>
///
public partial class Point 
{
    /// <summary>method <c>draw</c> renders the point.</summary>
    void draw() { ... }
}
 

Мой вопрос: Что, если бы я хотел добавить документацию для конкретной платформы Point.draw ? Или Point резюме по классу?

Очевидно , что с частичными классами я мог бы добавить новые методы , специфичные для платформы, в PointBlazor.cs и PointWinForms.cs , но я не знаю способа добавить документацию к существующим методам или самому классу, уже определенному в Point.cs , чтобы они упоминали другие методы, специфичные для платформы. Возможно ли это в C#?

(например, представьте, что в резюме класса точек может быть упомянуто только в Blazor, что точка использует координаты CSS или какой-либо комментарий в этом роде.)

Комментарии:

1. начиная с моих старых дней C/C , я бы просто определил переменную времени компиляции и #ifdef BLAZOR поместил ее в основной файл. В конце концов, частичные файлы все равно каким-то образом разрешаются во время компиляции… По общему признанию, клюге — но ничего лучшего на ум не приходит

Ответ №1:

Что, если бы я хотел добавить документацию для конкретной платформы в…

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

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

 /// <summary>method <c>draw</c> renders the point.</summary>
/// <remarks>
/// If running in Blazor, only use on the client side. No issues on winforms.
/// </remarks>
/// <param name="claims"></param>