第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用表達式作為字符串生成 Action<T>

使用表達式作為字符串生成 Action<T>

C#
九州編程 2021-11-21 14:59:10
我試圖弄清楚如何從代表動作“語句”行的字符串集合中生成一個動作......using System.Linq.Dynamic;Action<T> BuildAction<T>(T sourceObject, T destinationObject) where T : BaseThing{    var source = Expression.Parameter(sourceObject.GetType(), "source");    var destination = Expression.Parameter(destinationObject.GetType(), "destination");    var statements = new[] {        "destination.Foo = source.Foo",        "destination.X = source.Y"    };    var parsedStatements = statements.Select(s => DynamicExpression.Parse(new[] { destination, source }, typeof(void), s);    return Expression.Lambda<Action<T>>(Expression.Block(parsedStatements));}這個想法是最終得到類似......Action<T> result = (destination, source) => {     destination.Foo = source.Foo;     destination.X = source.Y;};我的另一個問題是源和目標(biāo)不必是相同的類型,它們只共享一個基類型,所以在這個例子中,目標(biāo)可能沒有 Y 屬性,源可能沒有 X 屬性(因此映射)。
查看完整描述

1 回答

?
守著一只汪

TA貢獻1872條經(jīng)驗 獲得超4個贊

所以事實證明,這個問題的答案并不像我希望的那么簡單。簡而言之......我需要編寫一個表達式解析器。

對于最簡單的情況(問題中提出的情況),我可以在我的部分解決方案中使用代碼,但對于完整的解決方案,我將不得不構(gòu)建一個表達式解析器,該解析器可以處理放入字符串中的更多復(fù)雜性.

就我而言,使用字典或類似方法只能解決一部分潛在問題,我不能使用反射,因為我的情況需要“大規(guī)模重用已編譯的操作”(我在問題中略有提及)。

我可以參考一系列問題的答案來解決這個問題的各個部分,但我設(shè)法找到了一個更“完整”的起點,以實現(xiàn)我在其他地方嘗試實現(xiàn)的目標(biāo)......

https://archive.codeplex.com/?p=simproexpr

...這個例子不僅可以解析表達式,還可以解析表達式塊。

使用那個/類似的東西,我將沿著這些方向構(gòu)建一些東西來解決我的問題,我希望這可以幫助其他人。


查看完整回答
反對 回復(fù) 2021-11-21
  • 1 回答
  • 0 關(guān)注
  • 218 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號