2010-08-12 112 views
0

我有兩個類:表達式樹轉換

class Customer 
{ 
    public string Fullname { get; set; } 
    public string Lastname { get; set; } 
    public int Age { get; set; } 
} 

class CustomerDTO 
{ 
    public string Fullname { get; set; } 
    public string Lastname { get; set; } 
    public int Age { get; set; } 
} 

現在我已經各層之間傳遞的expressiontree Expression<Func<Customer, bool>> expression,我可以將其轉換爲Expression<Func<CustomerDTO, bool>> expression,以便能夠使用它,因爲它會給編譯時間錯誤!

在此先感謝

+0

任何機會,你可以用一個接口,而不是類的?不知道我自己,只是一個建議。 – Lazarus 2010-08-12 11:26:21

+0

即'Expression >表達式'Customer和CustomerDTO然後實現該接口。 – Lazarus 2010-08-12 11:32:11

+0

我不能這樣做,因爲這導致第一類生成,我可以強制它實現一個接口! – Stacker 2010-08-12 11:39:59

回答

0

沒關係我做到了

Expression<Func<Customer, bool>> expression = v => v.Fullname == "Johm"; 
     var par = Expression.Parameter(typeof(CustomerDTO)); 
     Expression<Func<CustomerDTO, bool>> ex = (Expression<Func<CustomerDTO, bool>>)Expression.Lambda(expression.Body, par); 
+0

不錯,現在就接受你自己的答案,這樣它就會從隊列中移除。 :) – 2010-08-12 14:51:07

+0

雖然你的解決方案可以工作,而且我知道你說過你不想使用接口,但是現在通常是一個代碼生成器,這些代碼生成代碼就像部分類一樣。你可以在你實現接口的同一個類中添加一個局部類部件(所以另一個局部部件可以在下一個重新生成時被吹掉)。然後你可以使用'Expression >' – 2011-02-24 22:19:48