鉴于以下课程:
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 …