[英]C# read a class tree path in a string and access a value given an instance of that class
在C#中,給定該類的實例,是否可以讀取字符串中的類樹路徑並以編程方式訪問值?
例如:
public class LogGeometricModel
{
public double SmallEndDiameter { get; set; }
public double LargeEndDiameter { get; set; }
public class Log
{
public Guid Id { get; set; }
public LogGeometricModel GeometricModel { get; set; }
}
public class Solution
{
public DateTime TimeStamp { get; set; }
public double Price { get; set; }
public Log RotatedLog { get; set; }
}
字符串可能是這樣的(類樹中的路徑):
SmallEndDiameter =“解決方案/旋轉日志/幾何模型/ SmallEndDiameter”
LargeEndDiameter =“解決方案/ RotatedLog / GeometricModel / LargeEndDiameter”
價格 =“解決方案/價格”
ID =“解決方案/日志/ ID”
通過讀取這些字符串,我想訪問SmallEndDiameter,LargeEndDiameter,Price和Id的實際值。
絕對有可能。
public static object GetValue(object instance, string path)
{
object currentObject = instance;
foreach (string propertyName in path.Split('/'))
{
currentObject = currentObject
.GetType()
.GetProperty(propertyName)
.GetValue(currentObject, null);
}
return currentObject;
}
您不需要在字符串中包含“解決方案”。 顯然,這缺少錯誤處理,如果您要解析這樣的字符串,則需要這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.