Динамически получить значение из объекта класса по имени свойства в c# - PullRequest
0 голосов
/ 16 марта 2020

Я хочу написать метод, который должен возвращать значение из object для указанного свойства.

public class MyClass
{
    public int a { get; set; }
    public int b { get; set; }
    public int c { get; set; }
    public int d { get; set; }
}


public int GetValue(string field)
{
     MyClass obj=new MyClass();
     obj=FromDb(); //get value from db
     dynamic temp=obj;
     return temp?.field;
}

Приведенный выше код предназначен только для демонстрации того, что я ищу.

Здесь я хочу передать имя property (т.е. a / b / c / d в соответствии с моим кодом выше) в качестве входных данных для метода GetValue, и оно должно вернуть значение этого свойства.

Этот код успешно компилируется, но во время выполнения он будет искать имя свойства field, а не значение переменной поля.

Будут признательны за любые предложения или обходные пути.

1 Ответ

2 голосов
/ 16 марта 2020

Вы можете использовать отражение, чтобы получить значение:

public int GetValue(string field)
{
     MyClass obj = new MyClass();
     obj = FromDb(); //get value from db
     var property = obj.GetType().GetProperty(field);
     return (int)property.GetValue(obj);
}
...