113

このインターフェースがあるとします

public interface IFoo
{
    ///<summary>
    /// Foo method
    ///</summary>
    void Foo();

    ///<summary>
    /// Bar method
    ///</summary>
    void Bar();

    ///<summary>
    /// Situation normal
    ///</summary>
    void Snafu();
}

そしてこのクラス

public class Foo : IFoo
{
    public void Foo() { ... }
    public void Bar() { ... }
    public void Snafu() { ... }
}

基本クラスまたはインターフェイスの各メンバーのコメントを自動的に挿入できる方法またはツールはありますか?

派生サブクラスごとに同じコメントを書き直すのは嫌いだからです!

4

9 に答える 9

188

<inheritdoc />タグはいつでも使用できます。

public class Foo : IFoo
{
    /// <inheritdoc />
    public void Foo() { ... }
    /// <inheritdoc />
    public void Bar() { ... }
    /// <inheritdoc />
    public void Snafu() { ... }
}

このcref属性を使用すると、まったく異なるクラスまたは名前空間のまったく異なるメンバーを参照することもできます!

public class Foo
{
    /// <inheritdoc cref="System.String.IndexOf" />
    public void Bar() { ... } // this method will now have the documentation of System.String.IndexOf
}
于 2011-09-27T15:22:10.613 に答える
29

/// <inheritdoc/>継承が必要な場合に使用します。GhostDoc などは避けてください。

コメントが継承されないのは面倒だと思います。誰かが時間があれば、作成するのはかなり簡単なアドインです (できればいいのにと思います)。

とはいえ、私たちのコード ベースでは、インターフェイスにのみ XML コメントを配置し、クラスに追加の実装コメントを追加します。クラスはプライベート/内部であり、インターフェイスのみがパブリックであるため、これは機能します。インターフェイスを介してオブジェクトを使用するときはいつでも、完全なコメントがインテリジェンスに表示されます。

GhostDoc は良いスタートであり、コメントを書くプロセスを容易にしました。パラメータを追加/削除し、GhostDoc を再実行して説明を更新するときに、コメントを最新の状態に保つことは特に便利です。

于 2008-12-05T06:48:25.077 に答える
18

GhostDocはまさにそれを行います。継承されないメソッドについては、名前から説明を作成しようとします。

FlingThing() になる"Flings the Thing"

于 2008-12-05T05:15:00.413 に答える
14

Javaにはこれがあり、私はいつもそれを使用しています。ただ行う:

/**
 * {@inheritDoc}
 */

そして、Javadoc ツールがそれを理解します。

C# には同様のマーカーがあります。

<inheritDoc/>

ここでもっと読むことができます:

http://www.ewoodruff.us/shfbdocs/html/79897974-ffc9-4b84-91a5-e50c66a0221d.htm

于 2010-10-11T22:43:58.283 に答える
9

ReSharper には、基本クラスまたはインターフェースからコメントをコピーするオプションがあります。

于 2011-04-21T17:16:32.137 に答える
1

<inheritdoc/>最終的に、XML ドキュメント ファイル自体のタグを置き換えるためのサポートを追加するために、XML ドキュメント ファイルを後処理するツールを作成しました。www.inheritdoc.ioで入手できます (無料版が利用可能)。

于 2017-12-20T06:23:45.013 に答える