0

基本的にこのメソッドである関数を取得しました:

/// <summary>Extracts the parent id.</summary>
/// <param name="nameEntities">The name entities.</param>
/// <param name="tcdMakeId">The TCD make id.</param>
/// <returns>Parent Id.</returns>
public Nullable<int> ExtractParentId( IEnumerable<NameEntity> nameEntities, int childId )
{
    /* Do some Extraction here */
}

Method では、パラメータなどについて適切な XML ドキュメントを追加することはまったく問題ありません。しかし、関数でこれを行う方法はありますか? 私の同僚のインテリセンスは、彼に Arg1、Arg2 しか与えません。

関数は次のようになります。

private Func<IEnumerable<NameEntity>, int, Nullable<int>> ExtractParentId
{
    get
    {
        return this._extractParentId = this._extractParentId ??
            new Func<IEnumerable<NameEntity>, int, Nullable<int>>( ( nameEntities, childId ) =>
            {
                /* Do some Extraction here */
            } );
    }
}

これが完璧な例ではないことはわかっていますが、ここに実際のコードを投稿することはできません (corporate :/ と long への道)。

どうもありがとう、マーク

4

2 に答える 2

1

デリゲート ホイールを再発明しようとしているように見えます。

/// <summary>
/// 
/// </summary>
/// <param name="nameEntities"></param>
/// <param name="childID"></param>
/// <returns></returns> <!--etc-->
private delegate Nullable<int> ExtractParentIdDelegate(IEnumerable<int> nameEntities, int childID);

/// <summary>
/// 
/// </summary>
private ExtractParentIdDelegate FuncExtractParentId
{
    get
    {
        return this._extractParentId = this._extractParentId ?? new ExtractParentIdDelegate(delegate(IEnumerable<int> nameEntites, int childID)
                                                                    {
                                                                            //
                                                                    });
    }
}
于 2013-02-06T09:43:05.507 に答える
1

汎用の delegate を使用するのではなく、Func<...>このプロパティの特定のデリゲート型を宣言し、ドキュメントをデリゲート定義の一部として配置します。次に、プロパティはデリゲートのドキュメントを表示します。それは、あなたが見たArg1Arg2Func<R,S,T>がどこから来ているかです - .

たとえば、これを試してください:

    /// <summary>
    /// Using Func<int,int,int>, we get generic documentation
    /// </summary>
    public Func<int,int,int> UsingFunc{ get; }

    /// <summary>
    /// Example of a delegate with XML documentation as if it was a method.
    /// </summary>
    /// <param name="left">Left operand</param>
    /// <param name="right">Right operand</param>
    /// <returns>Whatever it returns</returns>
    public delegate int CustomDelegate(int left, int right);

    /// <summary>
    /// Using a custom delegate to get full documentation.
    /// </summary>
    public CustomDelegate UsingCustomDelegate{ get; }
于 2013-02-06T10:04:56.323 に答える