You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#实现从对象路径获取字符串格式属性完整路径的方法

C# 获取嵌套属性完整路径的解决方案

需求说明

我们需要获取形如以下格式的属性完整路径:

ProgrammeEtude.Description

现有实现痛点

目前可通过逐段拼接nameof的方式实现:

modelMember = $"{nameof(Gabarit.ProgrammeEtude)}.{nameof(Gabarit.ProgrammeEtude.Description)}";

该写法冗余度高,当类嵌套层级较多时,代码可读性和整洁度会大幅下降。

理想调用效果

我们希望通过封装好的函数直接获取属性路径,无需手动逐层拼接nameof,理想调用方式如下:

// 调用方式1
modelMember = typeof(ProgrammeEtude).GetPropertyFullName(nameof(ProgrammeEtude.Description));

// 调用方式2
modelMember = GetPropertyFullName(ProgrammeEtude.Description);

最终可行解决方案

可以通过表达式树实现更简洁的调用,具体实现代码如下:

public void Test1()
{
    var result = NameOf<Gabarit>(x => x.ProgrammeEtude.Description);
}

public static string NameOf<T>(Expression<Func<T, object>> selector)
{
    return string.Join(".", selector.ToString().Split('.').Skip(1));
}

该实现通过解析表达式树的字符串形式,自动截取并拼接属性路径,无需手动逐层处理嵌套层级,大幅优化代码整洁度。


内容的提问来源于stack exchange,提问作者Pierre-olivier Dubois-Nadeau

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 11:54:03