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