private static Maybe<string> GetMethodName(Expression expr)
{
return expr.MaybeAs<MethodCallExpression>().Bind(
call =>
{
if (call.Arguments.Count == 0 || (call.Method.IsExtensionMethod() && call.Arguments.Count == 1))
{
return Maybe.Just(call.Method.Name);
}
return Maybe.Nothing;
}
);
}