C # читает путь к дереву классов в строке и получает доступ к значению, данному экземпляру этого класса - PullRequest
0 голосов
/ 25 мая 2018

В 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 = "Решение/ RotatedLog / GeometricModel / SmallEndDiameter "

LargeEndDiameter =" Solution / RotatedLog / GeometricModel / LargeEndDiameter "

Цена =" Решение / Цена "

Id = "Solution / Log / Id"

Читая эти строки, я хотел бы получить доступ к фактическим значениям SmallEndDiameter, LargeEndDiameter, Price и Id.

1 Ответ

0 голосов
/ 25 мая 2018

Абсолютно возможно, да.

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;
}

Вам не нужно включать 'Solution' в строку.Это, очевидно, не обрабатывает ошибки, что, если вы анализируете строку, подобную этой, вы захотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...