簡體   English   中英

從Expression樹中獲取MethodInfo

[英]Get MethodInfo from Expression tree

我有以下方法:

public TResult Call<TResult>(Expression<Func<T, TResult>> code)
{
    var returnValue = default(TResult);
    // code that will inspect the interface method that is being called 
    // along with lots of other code
    // and then call a WebAPI service.
    return returnValue;
}

在這個例子中, T是一個名為ICustomer的接口, TResult將是一個CustomerData類。在這個特定的實例中,我正在做以下事情:

var model = client.Call(customer => customer.Get(1));

我的最終目標是能夠檢查某些屬性的接口方法。 基於這些屬性,我想調用WebAPI服務並將接口方法中的任何參數傳遞給它。

如何在Call方法中找出interface.Get(1)方法被調用?

在鬼混之后,我需要做的就是將表達式的Body MethodCallExpressionMethodCallExpression

您可以嘗試使用ExpressionVisitor 重寫VisitMethodCall方法將允許您檢查表達式中的每個方法調用。 如果是customer => customer.Get(1)您將獲得一個帶有MethodCallExpression回調,其Object屬性設置為表示customer ParameterExpressionMethod參數設置為Get方法的MethodInfoArguments設置為單個常量表達式的集合表示整數常量1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM