I donβt understand what you are doing, I think you could probably completely avoid the code that you are showing here.
I wrote this GetMemberName extension method, you can probably do something with this code:
public static string GetMemberName<T, TResult>( this T anyObject, Expression<Func<T, TResult>> expression) { return ((MemberExpression)expression.Body).Member.Name; } // call as extension method, if you have a instance string lengthPropertyName = "abc".GetMemberName(x => x.Length); // or call as a static method, by providing the type in the argument string lengthPropertyName = ReflectionUtility.GetMemberName( (string x) => x.Length);
Edit
just to outline the solution:
public static bool IsMethod<TResult>( MethodInfo method, Expression<Func<TResult>> expression) { // I think this doesn't work like this, evaluate static method call return method == ((MemberExpression)expression.Body).Member; } if (IsMethod(expr.Method, () => SqlFilterExtensions.Like)) {
source share