Проблема, которую я пытаюсь решить, заключается в том, как написать метод, который принимает имя свойства в виде строки и возвращает значение, присвоенное указанному свойству.
Мой класс модели объявлен аналогично:
public class Foo
{
public int FooId
public int param1
public double param2
}
и из моего метода я хочу сделать что-то похожее на это
var property = GetProperty("param1)
var property2 = GetProperty("param2")
В настоящее время я пытаюсь сделать это, используя выражения, такие как
public dynamic GetProperty(string _propertyName)
{
var currentVariables = m_context.Foo.OrderByDescending(x => x.FooId).FirstOrDefault();
var parameter = Expression.Parameter(typeof(Foo), "Foo");
var property = Expression.Property(parameter, _propertyName);
var lambda = Expression.Lambda<Func<GlobalVariableSet, bool>>(parameter);
}
Правильно ли этот подход, и если да, возможно ли вернуть это как динамический тип?
Ответы были правильными, делали это слишком сложным. Решение теперь:public dynamic GetProperty(string _propertyName)
{
var currentVariables = m_context.Foo.OrderByDescending(g => g.FooId).FirstOrDefault();
return currentVariables.GetType().GetProperty(_propertyName).GetValue(currentVariables, null);
}