Expressions méthode statique requiert une instance null Méthode non statique nécessite une instance non null

c# expression-trees

Question

Je commence à utiliser Expressions et j'obtiens l'erreur suivante:

System.ArgumentException: la méthode statique nécessite une instance nulle, la méthode non statique requiert une instance non nulle.
Nom du paramètre: méthode

Le code est comme suit:

        int inP = 100;
        object inParam = inP;
        Type inParamType = inParam.GetType();

        ParameterExpression pe = Expression.Parameter(typeof(S), "pe");

        Expression left = Expression.Property(pe, typeof(S).GetProperty(propName));
        Expression right = Expression.Constant(inParam, inParamType);

        MethodInfo mi = inParamType.GetMethod(operand, BindingFlags.Instance | BindingFlags.Public, null, new Type[] { typeof(object) }, null);
        Expression e1 = Expression.Call(mi, left, right);

Réponse populaire

Vous utilisez BindingFlags.Instance , vous ne récupérerez donc que des méthodes d'instance. Les méthodes d'instance doivent être appelées C # af(b) , pas f(a, b) , et cela se traduit par l'arbre d' Expression.Call(left, mi, right) et non Expression.Call(mi, left, right) . C'est ce que l'exception vous dit:

La méthode statique nécessite une instance nulle, la méthode non statique une instance non nulle.

Dans ce cas, vous avez une méthode non statique, vous devez donc transmettre une instance sur laquelle appeler la méthode.



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi