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 */
}

在方法中,为参数等添加漂亮​​的 XML 文档完全没有问题。但是有没有办法用函数来做到这一点?我同事的 Intellisense 只给了他 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 */
            } );
    }
}

好吧,我知道这不是一个完美的例子,但我不能在这里发布真正的代码(企业:/ 和方式很长),但这基本上是一个精简版。

非常感谢,马克

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

与其使用通用委托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 回答