Microsoft.CSharp.dll程序集的作用
《C#與.NET 4高級(jí)程序設(shè)計(jì):第5版》第18章動(dòng)態(tài)類型和動(dòng)態(tài)語(yǔ)言運(yùn)行時(shí),本章,我們將學(xué)習(xí)dynamic關(guān)鍵字的方方面面,理解如何使用DLR (Dynamic Language Runtime,動(dòng)態(tài)語(yǔ)言運(yùn)行時(shí))將松散的類型映射到正確的內(nèi)存對(duì)象。理解了DLR提供的諸多服務(wù)之后,你將看到一些示例,它們使用動(dòng)態(tài)類型來(lái)簡(jiǎn)化后期綁定方法的調(diào)用(通過(guò)反射服務(wù))并且可以方便地與遺留的COM庫(kù)進(jìn)行通信。本節(jié)為大家介紹Microsoft.CSharp.dll程序集的作用。
作者:朱曄 等譯來(lái)源:人民郵電出版社|2011-04-03 12:59
?收藏
??分享
18.1.2 Microsoft.CSharp.dll程序集的作用
當(dāng)使用Visual Studio 2010新建一個(gè)C#項(xiàng)目時(shí),將自動(dòng)引用一個(gè)名為Microsoft.CSharp.dll的.NET 4程序集(可以在Solution Explorer的References文件夾下找到)。這個(gè)庫(kù)非常小,只定義了一個(gè)命名空間(Microsoft.CSharp.RuntimeBinder)和兩個(gè)類(如圖18-2所示)。
| ? |
| (點(diǎn)擊查看大圖)圖18-2 Microsoft.CSharp.dll程序集 |
顧名思義,這兩個(gè)類為強(qiáng)類型的異常類。RuntimeBinderException是最普通的類,如果試圖調(diào)用一個(gè)不存在的動(dòng)態(tài)數(shù)據(jù)類型的成員,將會(huì)拋出該異常(比如調(diào)用toupper()和Foo()方法)。如果調(diào)用了一個(gè)存在的成員但卻指定了錯(cuò)誤的參數(shù)數(shù)據(jù),將同樣會(huì)拋出該異常。
由于動(dòng)態(tài)數(shù)據(jù)的這種不確定性,在調(diào)用用C#的dynamic關(guān)鍵字聲明的變量的成員時(shí),可以用合適的try/catch塊來(lái)包裹,并以一種優(yōu)雅的方式來(lái)處理異常。
?在調(diào)用這個(gè)方法時(shí),會(huì)發(fā)現(xiàn)對(duì)ToUpper()方法(注意T和U這兩個(gè)字母)的調(diào)用正確無(wú)誤,但控制臺(tái)上還是會(huì)顯示一條錯(cuò)誤數(shù)據(jù)。
?當(dāng)然,如果將所有動(dòng)態(tài)方法的調(diào)用都用try/catch塊來(lái)包裹,這個(gè)過(guò)程將是十分麻煩的。只要注意了拼寫和參數(shù)傳遞,就沒(méi)有必要都進(jìn)行包裹。但是,當(dāng)你不確定目標(biāo)類型是否包含某個(gè)成員的時(shí)候,如果用try/catch塊來(lái)進(jìn)行包裹的話,那么異常的捕獲就會(huì)十分方便了。
總結(jié)
以上是生活随笔為你收集整理的Microsoft.CSharp.dll程序集的作用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: “微商女王”张庭频繁现身代理微信群 本人
- 下一篇: nuget 包版本冲突解决 packag