簡體   English   中英

C#讀取字符串中的類樹路徑,並在給定該類實例的情況下訪問值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM