我有一個使用lambda(語法)創建的Expression<Func<TOwner, object>>
類型表達式。它具有成員訪問表達式的某個地方。我想創建表達式來選擇所提到的表達式結果的另一個屬性。 C#的擴展成員訪問表達式
我而言它應該是這樣的:
Expression<Func<MyClient, object>> exStartingPath = x => x.Address;
Expression<Func<MyClient, object>> exExtendedPath = ExtendSelection(exStartingPath, "Street");
//exExtendedPath should be equivalent to x => x.Address.Street
應該如何ExtendSelection(...)來實現?我應該分解已經存在的表達式並使用一些遍歷技術來編寫新的表達式,還是有任何可以「附加」成員選擇的API?
嘗試看到這個[文章](http://stackoverflow.com/questions/2797261/mutating-the-expression-tree-of-a-predicate-to-target-another-type?rq=1 )和[this](http://stackoverflow.com/questions/29893512/convert-an-expressionfunct-bool-to-an-expressionfunct1-bool-so-that-t-is/29894371#29894371) – Grundy
@Grundy I沒有看到這些問題如何回答這一問題。 – Servy
你是什麼意思在身體的某個地方? 如果您有: 表達式> exStartingPath = x => ExtractStreetData(x.Address); 然後將x.Address轉換爲x.Street或x.Address.Street可能甚至不會生成有效的結構... –
MBoros