2

私はいくつかの古いコードにアクセスしていますが、次のように、EventHandler <T>を使用するのではなく、デリゲートで手動で宣言されたイベントがかなりあります。

/// <summary>
/// Delegate for event Added
/// </summary>
/// <param name="index">Index of the item</param>
/// <param name="item">The item itself</param>
public delegate void ItemAdded(int index, T item);

/// <summary>
/// Added is raised whenever an item is added to the collection
/// </summary>
public event ItemAdded Added;

サンドキャッスルを使用してライブラリを文書化するまでは、イベント宣言によって生成されたプライベートの追加フィールドのXMLコメントが見つからないためです。私はそれを整理してみたいのですが、私がしたいのは次のいずれかです。

  • すべてのプライベートフィールドを完全に無視するように指示せずに、自動生成されたプライベートフィールドを無視するようにサンドキャッスルを取得します

また

  • プライベートフィールド用に生成されたXMLコメントを取得します

コードを次のようにリファクタリングせずにこれを実現する方法はありますか?

/// <summary>
/// Delegate for event <see cref="Added"/>
/// </summary>
/// <param name="index">Index of the item</param>
/// <param name="item">The item itself</param>
public delegate void ItemAdded(int index, T item);

/// <summary>
/// Private storage for the event firing delegate for the <see cref="Added"/> event
/// </summary>
private ItemAdded _added;

/// <summary>
/// Added is raised whenever an item is added to the collection
/// </summary>
public event ItemAdded Added
{
    add
    {
        _added += value;
    }
    remove
    {
        _added -= value;
    }
}
4

1 に答える 1

0

最適ではありませんが、これを回避する方法を見つけました。これは、プロジェクトの名前空間レベルのドキュメントを含むファイルにXMLコメントを手動で配置することでした。

<member name="F:myCompany.Common.Collections.Generic.EventableCollection`1.Added">
  <summary>
    Auto-generated backing field for the <see cref="E:myCompany.Common.Collections.Generic.EventableSortedList`1.Added">Added</see> event
  </summary>
</member>

これにより、大まかに必要なものが得られます。

于 2010-03-16T10:34:46.773 に答える