asp.net C#:获取委托中的属性名称

切尼

我想通过传递委托而不是const字符串来提高可维护性。我所做的就是这样;

var propertyName = SprintMetrics.GetNameOf(metric => metric.Productivity); //Should be : "Productivity"

和:

public static string GetNameOf(Func<SprintMetrics, double> valueFunc)
{
    return valueFunc.GetMethodInfo().Name; //Result is : <Excute>b_40....
}

在调试过程中,我走路抛出“ valueFunc”,而在任何地方都没有“生产力”。

有什么办法可以获取酒店的名称“生产力”?谢谢。


根据下面的“拒绝访问”的答案,可以通过以下两种方法来完成:

var p = nameof(SprintMetrics.Productivity); //"Productivity"

var metrics = new SprintMetrics();
p = nameof(metrics.Productivity); //"Productivity"
拒绝访问

您可以使用为此任务设计的C#关键字nameof:

var propertyName = nameof(metric.Productivity)

有关更多信息,请参见以下文章

为了从lambda表达式中提取属性名称,您的代码可以使用以下方法(在这种情况下,无需输入Func参数):

public static string GetPropertyName<TProperty>(Expression<Func<TProperty>> propertyLambda)
{
    MemberExpression member = propertyLambda.Body as MemberExpression;
    if (member == null)
        throw new ArgumentException(string.Format(
            "Expression '{0}' refers to a method, not a property.",
            propertyLambda.ToString()));

    PropertyInfo propInfo = member.Member as PropertyInfo;
    if (propInfo == null)
        throw new ArgumentException(string.Format(
            "Expression '{0}' refers to a field, not a property.",
            propertyLambda.ToString()));
    return propInfo.Name;
}

您可以这样称呼: GetPropertyName(() => metric.Productivity)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用 PropertyDescriptor C# ASP.NET MVC 4 获取显示名称属性

无法从razor ASP.net获取模型属性-C#

在asp.net C#中获取特定的pdf页码

在ASP .NET中通过C#获取存储过程脚本

如何使用asp.net mvc和razor模板引擎从c#中的路由名称获取URL?

如何在asp.net core中获取自定义属性名称?

C# ASP.Net 获取按部分名称排序的文件夹列表

如何通过代码(C#,ASP.net)获取应用程序池名称

在ASP.NET中的IdentityUserRole 2.0中获取角色名称

如何基于属性值c#,asp.net获取xml节点值?

Asp.Net MVC获取显示名称

在gridview单元格工具提示ASP.net/C#中显示列的名称

ASP.NET 设置和获取属性中的视图状态

如何从ASP / vb.net中获取html属性

在jquery中获取和设置ASP.NET属性

如何从ASP.net中的委托人获取电子邮件地址?

在 C# asp.net 中获取 TFS 中的所有项目列表?

如何在asp.net C#中的SQL Server中以YY格式获取年份

无法从 asp.net c# 中的文本框中获取值

获取 asp.net c# api 调用概述

从 msacess ASP.NET C# 获取多个数据

如何获取模型的“描述”属性而不是“名称”属性-(MVC asp.net)

如何向在ASP.NET C#类中创建的控件添加属性?

使用ASP.net C#从html选择列表中获取所有项目

如何获取动态表中的当前行索引?C#/ ASP.NET MVC

Asp.net无法从C#变量中的javascript函数获取值

asp net c#使用复选框获取gridview中特定行的值

如何在asp.net C#中获取基于URL的https文件

如何在ASP.NET C#中获取会话的开始和结束时间