2011-12-09 9 views
2

TClass1TClass2の2つのダミークラスがあります。私は式ツリーを構築して操作を呼び出す方法を知りたいですTClass1.TestMethod。私は具体的には、Expression.Callメソッドを使ってクラスのインスタンスメソッドに基づいて式を作成するという問題があります。どんな助けもありがとう。式ツリーの構築とExpression.Callメソッドの使用

public class TClass1 
{ 
    public string Prop1 { get; set; } 
    public int Prop2 { get; set; } 

    public TClass2 TestMethod(TClass2 tc2, int c) 
    { 
     return new TClass2() { Cprop1 = "The result: " + this.Prop1 + ".", Cprop2 = this.Prop2 * c }; 
    } 
} 

public class TClass2 
{ 

    public string Cprop1 { get; set; } 
    public int Cprop2 { get; set; } 
} 

答えて

8

このコードを試してみてください。

var par1 = Expression.Parameter(typeof(TClass2), "tc2"); 
var par2 = Expression.Parameter(typeof(int), "c"); 
var instance = Expression.Parameter(typeof(TClass1), "inst"); 
var inExp = Expression.Call(instance,typeof(TClass1).GetMethod("TestMethod"),par1,par2); 
var exp = Expression.Lambda<Func<TClass1,TClass2,int,TClass2>>(inExp,instance, 
                    par1,par2); 
var deleg = exp.Compile(); 
関連する問題