Beispiel #1
0
        protected override bool CanHandle(LambdaExpression expression)
        {
            if (expression.Body is MethodCallExpression)
            {
                return true;
            }

            return expression
                .Convert(e => e.Body as UnaryExpression)
                .Convert(ue => ue.Operand as MethodCallExpression)
                .Convert(mc => mc.Object as ConstantExpression)
                .Convert(ce => ce.Value as MethodInfo)
                .Convert(mi => mi != null);
        }
Beispiel #2
0
        protected override string ExtractName(LambdaExpression expression)
        {
            var methodCallExpression = expression.Body as MethodCallExpression;
            if (methodCallExpression != null)
            {
                return methodCallExpression.Method.Name;
            }

            var methodName =
                expression.Convert(e => e.Body as UnaryExpression)
                          .Convert(ue => ue.Operand as MethodCallExpression)
                          .Convert(mc => mc.Object as ConstantExpression)
                          .Convert(ce => ce.Value as MethodInfo)
                          .Convert(mi => mi.Name);
            if (!string.IsNullOrEmpty(methodName))
            {
                return methodName;
            }

            throw new InvalidOperationException();
        }