私が解決しようとしている問題は、プロパティ名を文字列として受け取り、そのプロパティに割り当てられた値を返すメソッドを作成する方法です。
私のモデルクラスは次のように宣言されています:
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);
}