La création d'un accesseur de propriété délégué

J'ai créé des méthodes pour la conversion d'une propriété lambda à un délégué:

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;
}

Ces travaux:

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

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

mais elles ne compile pas:

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

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

La MakeSetter lignes échouer avec "Les arguments de type ne peut être déduit à partir de l'utilisation. Essayez de spécifier le type des arguments explicitement."

Est ce que je suis en train de faire est possible? Merci à l'avance.

InformationsquelleAutor Jim C | 2010-05-12