gpt4 book ai didi

c# - 通过字符串在对象图中查找属性

转载 作者:太空狗 更新时间:2023-10-29 17:33:32 25 4
gpt4 key购买 nike

我正在尝试使用任意 字符串访问嵌套类结构的各个部分。

给定以下(人为的)类:

public class Person
{
public Address PersonsAddress { get; set; }
}

public class Adddress
{
public PhoneNumber HousePhone { get; set; }
}

public class PhoneNumber
{
public string Number { get; set; }
}

我希望能够从 Person 对象的实例中获取位于 "PersonsAddress.HousePhone.Number" 的对象。

目前我正在使用反射做一些时髦的递归查找,但我希望那里的一些忍者有一些更好的想法。

作为引用,这是我开发的(蹩脚的)方法:

private static object ObjectFromString(object basePoint, IEnumerable<string> pathToSearch)
{
var numberOfPaths = pathToSearch.Count();

if (numberOfPaths == 0)
return null;

var type = basePoint.GetType();
var properties = type.GetProperties();

var currentPath = pathToSearch.First();

var propertyInfo = properties.FirstOrDefault(prop => prop.Name == currentPath);

if (propertyInfo == null)
return null;

var property = propertyInfo.GetValue(basePoint, null);

if (numberOfPaths == 1)
return property;

return ObjectFromString(property, pathToSearch.Skip(1));
}

最佳答案

您可以简单地使用标准 .NET DataBinder.Eval Method ,像这样:

object result = DataBinder.Eval(myPerson, "PersonsAddress.HousePhone.Number");

关于c# - 通过字符串在对象图中查找属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5877251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com