Erstellen eines Property-Setter-Delegaten

Ich haben erstellt Methoden für die Konvertierung einer Eigenschaft lambda Delegierter:

public static Delegate MakeGetter<T>(Expression<Func<T>> propertyLambda)
{
    var result = Expression.Lambda(propertyLambda.Body).Compile();
    return result;
}

public static Delegate MakeSetter<T>(Expression<Action<T>> propertyLambda)
{
    var result = Expression.Lambda(propertyLambda.Body).Compile();
    return result;
}

Diese Arbeit:

Delegate getter = MakeGetter(() => SomeClass.SomeProperty);
object o = getter.DynamicInvoke();

Delegate getter = MakeGetter(() => someObject.SomeProperty);
object o = getter.DynamicInvoke();

aber diese wird nicht kompilieren:

Delegate setter = MakeSetter(() => SomeClass.SomeProperty);
setter.DynamicInvoke(new object[]{propValue});

Delegate setter = MakeSetter(() => someObject.SomeProperty);
setter.DynamicInvoke(new object[]{propValue});

Den MakeSetter Linien ausfallen, mit "Der Typ der Argumente nicht entnommen werden kann, die aus der Verwendung. Versuchen Sie, den Typ der Argumente ausdrücklich."

Ist, was ich versuche zu tun möglich? Vielen Dank im Voraus.

InformationsquelleAutor der Frage Jim C | 2010-05-12

Schreibe einen Kommentar