我有一个问题,类似于过去的问题,但我想知道是否有办法实现这一点:
将属性本身的名称发送到方法,而不直接使用属性。 (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/