錯(cuò)誤信息為(wèi):
“object”未包含Date的(de)定義。
“Unhandled Exception: Microsoft.CSharp.RuntimeBi≤÷∑★nder.RuntimeBinderException: ‘object’±<♣• does not contain a definition for ‘Value’♥ ”
查了(le)資料,原因是(shì)匿名類的(de)屬性訪問(wèn)權限是(shì)i↔♣•<nternal,隻有(yǒu)在同一(yī)程序集(Assembly)中才能(néng)使用≠↔(yòng)。一(yī)旦跨程序集使用(yòng),則會(huì)出現(xiàn)無法訪問£ ★λ(wèn)的(de)錯(cuò)誤。所以dynamic在跨程序集的(de)使 ®$用(yòng)場(chǎng)景中,受到(dào)很(hěn)多(d♠βuō)的(de)限制(zhì)。(匿名方法可(kě)能(néng)也(yě)有(yǒu)這(zhè♣♠)樣的(de)情況,未證實)。
但(dàn)我發現(xiàn),這(zhè)裡(lǐ)有↓™(yǒu)個(gè)有(yǒu)意思的(de)情況。雖然跨程序集無法↑ε直接調用(yòng)屬性,但(dàn)是(shì)dynamic的(de)數(shù)據确實☆©←傳遞過來(lái)了(le)。
解決方法
// 收到(dào)dynamic的(de)msg後,先序列化(huà)成ε★json字符串,然後在将json字符串反序列化(huà)成dynamic類型。
var json = JsonConvert.SerializeObject¥₽≤≠(msg, Formatting.Indented)>←∏;
var newMsg = JsonConvert.DeserializeObject(js→ on);