2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VisualStudio XMLコメント<inheritdoc/>の使い方

Posted at

このドキュメントの内容

VisualStudio2019 16.4 で inheritdoc がサポートされるようになりました。
メソッドをオーバーライドしたり、インターフェースのメンバを実装したりしたときに XML コメントを引き継ぐことができるようになる機能です。

対象のメソッドが複数の型パラメータや複数の引数を持つ場合にパラメータのコメントを期待通りに引き継がせることができず、小一時間試行錯誤してしまいました。単純な勘違いでした。

基底クラスに対してXMLコメントを記述する

次のように基底クラスを実装し、XMLコメントを記述しました。
GetItem メソッドは TKey, TItem の二つの型パラメータを持ちます。

/// <summary>
/// 基底クラス
/// </summary>
abstract class BaseClass
{
    /// <summary>
    /// 指定されたキーに対応するアイテムを取得します。
    /// </summary>
    /// <typeparam name="TKey">キーの型</typeparam>
    /// <typeparam name="TItem">アイテムの型</typeparam>
    /// <param name="key">キー</param>
    /// <param name="item">取得されたアイテム</param>
    /// <returns>取得できた場合 true を返します。</returns>
    /// <exception cref="KeyNotFoundException">
    /// 指定されたキーが存在しません。
    /// </exception>
    public abstract TItem GetItem<TKey, TItem>(TKey key);
}

誤)各タグに inheritdoc を記述する

summay や typeparam など各タグに inheritdoc を記述してみます。
基底クラスに記述したコメントは引き継がれるものの、型パラメータは全ての型パラメータに対するコメントが連結されて表示されてしまいます。

/// <summary>
/// サブクラス
/// </summary>
class SubClass : BaseClass
{
    /// <summary>
    /// <inheritdoc/>
    /// </summary>
    /// <typeparam name="TKey"><inheritdoc/></typeparam>
    /// <typeparam name="TItem"><inheritdoc/></typeparam>
    /// <param name="key"><inheritdoc/></param>
    /// <returns><inheritdoc/></returns>
    public override TItem GetItem<TKey, TItem>(TKey key)
    {
        return default;
    }
}

TKey のツールチップの表示結果です。TKey と TItem に対するコメントが連結された結果が表示されています。TItem のツールチップも同じです。
キャプチャ.PNG

正)inheritdoc だけ記述する

/// <summary>
/// サブクラス
/// </summary>
class SubClass : BaseClass
{
    /// <inheritdoc/>
    public override TItem GetItem<TKey, TItem>(TKey key)
    {
        return default;
    }
}

Tkey のツールチップの表示結果です。TKey に対するコメントだけが表示されています。
キャプチャ.PNG

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?