c# - 将属性名称发送到方法

标签 c# properties

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

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

示例代码:

#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

最佳答案

如果您的目标是 .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 在评论中重新创建属性的帖子。

关于c# - 将属性名称发送到方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26828169/

相关文章:

c# - 使用键/值解析行的 LINQ 方法

python - 如何在 Python 中设置属性并事先检查其值?

java - pdf文件汉字写法如何处理

javascript 如何在循环内向数组的坐标添加其他属性,而不删除数组的现有属性

c# - 创建新的 System.Diagnostics.PerformanceCounter 非常慢

c# - YouTube API登录用户缩略图C#

c# - 页面生命周期中的 .net ViewState

c# - WebHost.CreateDefaultBuilder(string [] args) 可能的命令行参数是什么?

php - 属性默认值为 null 是否与无默认值相同?

c# - 使用反射设置对象属性