通过反射获得完整的“路径”(C#)

Kar*_*sar 0 c# reflection

是否有可能通过反射获得完整的“路径”?

示例假设我有以下类/属性。

public class Member
{
    public string Name;
    public Address Address;
}

public class Address
{
    public string Line1;
    public string Line2;
    public string Line3;
}
Run Code Online (Sandbox Code Playgroud)

想象一下,我有一个名为m. 是否可以通过反射获得完整路径为“Member.Address.Line1”(作为字符串),只是通过某种方式传递m.Address.Line1

Cub*_*anX 6

如果您愿意使用,Expression<Func<T>>那么是的,它应该很简单。

只是做这样的事情:

 public string GetFullPath<T>(Expression<Func<T>> action) {
  return action.Body.ToString();
}

var fullPath = GetFullPath(() => m.Address.Line1);
Run Code Online (Sandbox Code Playgroud)

这不会给你你想要的东西,但它会非常接近,你可以删除你不想要的部分。

我将在该对象中多挖一点,看看是否有一种更简洁的方法可以让您更接近您想要的东西。