Das Problem, das ich zu lösen versuche, ist, wie eine Methode geschrieben wird, die einen Eigenschaftsnamen als eine Zeichenfolge annimmt und den dieser Eigenschaft zugewiesenen Wert zurückgibt.C# Zugriff auf Eigenschaftswerte dynamisch nach Eigenschaftsname
ist meine Modellklasse ähnlich wie erklärt:
public class Foo
{
public int FooId
public int param1
public double param2
}
und aus meiner Methode möchte ich etwas ähnlich wie diese
var property = GetProperty("param1)
var property2 = GetProperty("param2")
ich zur Zeit, dies zu tun versucht bin tun, indem Sie Ausdrücke wie beispiels wie
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);
}
Ist dieser Ansatz korrekt, und wenn ja, ist es möglich, th zurückzukehren ist als dynamischer Typ?
Die Antworten waren korrekt, machte dies viel zu komplex. Die Lösung ist jetzt:
public dynamic GetProperty(string _propertyName)
{
var currentVariables = m_context.Foo.OrderByDescending(g => g.FooId).FirstOrDefault();
return currentVariables.GetType().GetProperty(_propertyName).GetValue(currentVariables, null);
}
Sie können jst mit System.Reflection.PropertyInfo den Wert einer Eigenschaft eines bestimmten Typs ermitteln. http://msdn.microsoft.com/en-us/library/system.reflection.propertyinfo.aspx – Chris