相关疑难解决方法(0)

为什么我不能将Expression Body转换为MethodCallExpression

鉴于以下课程:

public class MyClass {

    private readonly UrlHelper _urlHelper;

    // constructor left out for brevity

    // this is one of many overloaded methods
    public ILinkableAction ForController<TController, T1, T2>(Expression<Func<TController, Func<T1, T2>>> expression) {
        return ForControllerImplementation(expression);
    }

    private ILinkableAction ForControllerImplementation<TController, TDelegate>(Expression<Func<TController, TDelegate>> expression) {
        var linkableMethod = new LinkableAction(_urlHelper);

        var method = ((MethodCallExpression) expression.Body).Method;
        method.GetParameters().ToList().ForEach(p => linkableMethod.parameters.Add(new Parameter {
            name = p.Name,
            parameterInfo = p
        }));

        return linkableMethod;
    }
}
Run Code Online (Sandbox Code Playgroud)

以及以下实施:

var myClass = new MyClass(urlHelper);
myClass.ForController<EventsController, int, IEnumerable<EventDto>>(c => c.GetEventsById);
Run Code Online (Sandbox Code Playgroud)

GetEventsById …

c# reflection expression casting

3
推荐指数
1
解决办法
6154
查看次数

标签 统计

c# ×1

casting ×1

expression ×1

reflection ×1