簡體   English   中英

從表達式中調用實例方法

[英]Invoke an instance method from a expression

我試圖找出如何使用提供給該方法的參數調用Expression>中描述的實例方法。

這里有一個類似的問題: 如何從c#中的MethodCallExpression調用方法 ,但是它在非實例方法的上下文中運行。 我的問題是:如何在調用它之前使用適當的實例構建該表達式。

void Main()
{
    Expression<Action<MyClass>> expr = x => x.SomeMethod("Nathan", 10, 1.5d); 

    // i need to provide the expression a new MyClass()

    Expression.Lambda(expr).Compile().DynamicInvoke();
}

public class MyClass 
{
    public void SomeMethod(string param1, int param2, double param3) {
        Console.WriteLine ("Hello: {0}, {1}, {2}", param1, param2, param3);
    }
}

如果只需要調用表達式,則需要將其編譯為委托,然后調用它:

Expression<Action<MyClass>> expr = x => x.SomeMethod("Nathan", 10, 1.5d); 
Action<MyClass> action = expr.Compile();

MyClass instance = new MyClass();
action(instance);

暫無
暫無

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

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