在 C# 中解决这个问题的最佳方法是什么?string propPath = "ShippingInfo.Address.Street";我将有一个类似于上面从映射文件中读取的属性路径。我需要能够询问 Order 对象下面代码的值是什么。this.ShippingInfo.Address.Street性能与优雅的平衡。所有对象图关系都应该是一对一的。第 2 部分:如果它是一个 List 或类似的东西,那么添加获取第一个的能力会有多困难。 最佳答案 也许像这样?string propPath = "ShippingInfo.Address.Street";object propValue = this;foreach (string propName in propPath.Split('.')){ PropertyInfo propInfo = propValue.GetType().GetProperty(propName); propValue = propInfo.GetValue(propValue, null);}Console.WriteLine("The value of " + propPath + " is: " + propValue);或者,如果你更喜欢 LINQ,你可以试试这个。 (虽然我个人更喜欢非 LINQ 版本。)string propPath = "ShippingInfo.Address.Street";object propValue = propPath.Split('.').Aggregate( (object)this, (value, name) => value.GetType().GetProperty(name).GetValue(value, null));Console.WriteLine("The value of " + propPath + " is: " + propValue);关于C# - 递归/反射属性值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2692807/
10-13 06:27