将属性名称发送到方法

时间:2014-11-09 12:29:36

标签: c# properties

我有一个问题,类似于过去的问题,但我想知道是否有办法实现这一目标:

向方法发送属性本身的名称,而不直接使用该属性。 (IE。不是GetName(()=> ParamSearch1参数 - 就像在另一个解决方案上看到的那样)

示例代码:

#region Props

    public string ParamSearch1
    {
        get
        {
            return GetValueFromQueryString(/*Here should come a string called ParamSearch1*/); 

        }
    }

    #endregion

    #region Helper Methods

    private string GetValueFromQueryString(string keyName)
    {
        return string.IsNullOrEmpty(Request.QueryString[keyName]) ? "" : Request.QueryString[keyName];
    }

    #endregion

1 个答案:

答案 0 :(得分:4)

如果您的目标是.NET 4.5,则可以使用CallerMemberName属性。

public string ParamSearch1
{
    get
    {
       return GetValueFromQueryString();     
    }
}

private string GetValueFromQueryString([CallerMemberName] string keyName = "")
{
    return string.IsNullOrEmpty(Request.QueryString[keyName]) ? "" : Request.QueryString[keyName];       
}

否则,除了您已经遇到过的解决方案之外,没有其他内置解决方案。如果您愿意添加额外的依赖项,则可以使用MS BCL Portability Pack向以前版本的.NET提供CallerMemberNameAttribute,或者按照Thomas的帖子重新创建评价。