亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

LINQ如何構建框架

發布時間:2021-12-01 10:22:00 來源:億速云 閱讀:146 作者:小新 欄目:編程語言

小編給大家分享一下LINQ如何構建框架,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

如今,LINQ的版本發布已經塵埃落定,是時候思考如何使用它了。Keith Farmer甚至談到了使用LINQ以消除子類。不過,在我們了解這些之前,還是先看看微軟的官方指南吧。

根據LINQ構建框架設計指南的精神,微軟發布了基于LINQ構建框架設計指南。LINQ構建框架設計指南涵蓋了諸如API的設計與行為等主題。與很多公司制定的編碼指南不同,它并沒有包含設計的細枝末節,例如命名模式與格式,除非它們牽涉到公有的API庫。

大多數框架設計指南最終都能夠找到與FxCOP集成的方式。FxCOP是一個代碼分析工具,它被微軟和其它公司用來確保編碼的一致性。

在概括的介紹之后,該文檔介紹了擴展方法(Extension Methods)和泛型委托Func、Action以及Expression。在指南給出的標準警告中,有一個與命名空間沖突無關的指導——它要求在普通方法能夠實現的情況下,不要濫用擴展方法。當兩個庫都公開了相同類型的擴展方法時,會發生方法名稱的沖突。一旦發生,只能導入一個庫,另一個庫則必須使用完整的名稱才能被引用。

在擴展LINQ一節中,對于如何命名泛型類型有一個頗有助益的建議。在類型名為S以指代包含元素項的集合時,名為T的泛型類型總是指代集合的元素項(items)。雖然這不是強制性的,但至少有助于閱讀內建方法(built-in methods)。

對于性能,指南提出的一個建議是,如果性能牽涉到計算集合的元素總數,則實現ICollection有助于提高性能。當你只能實現IEnumerable時,就必須遍歷整個集合才能得到集合的元素總數。

現在,再回頭看看Keith Farmer提到的避免子類的方法:

我過去一直在考慮的一件事情是削減類的職責,使其只具備基本的定義:恰如其分的屬性定義,與屬性對應的方法,以及構造器和類型轉換器。

然后使用擴展方法定義適當的操作,而不需要維護類作為自身實體的概念,這樣就沒有必要創建子類型了(即使子類型是可行的)。

例如,一個Node不需要知道Graph的操作也能夠工作良好,也可以認為Graph不需要了解IsNetworkRouter的內容。

在這種情況下,類似于Traverse(GraphLink)這樣的方法就屬于Graph中很好的方法定義,而類似于 FindLeastWorkRoute(Node, Node)這樣的方法,由于它依賴于GraphLink的特定子類型的實現細節(即它具有一個關聯的Work衡量標準),那么在我看來,這樣的方法***定義為一個擴展方法。

如果僅僅是為了實現應用程序特定的邏輯,而去創建一個自定義子類型,就會擾亂我們關注的類(例如,Graph就勝過同時定義Graph和GraphLink),而通過擴展方法就可以避免這樣的情況。以上介紹LINQ構建框架設計指南。

以上是“LINQ如何構建框架”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

保靖县| 巨鹿县| 胶南市| 永登县| 南投县| 江口县| 来安县| 平安县| 临湘市| 德清县| 宁南县| 阿瓦提县| 荣成市| 开江县| 宜兰县| 土默特右旗| 陕西省| 孟村| 大厂| 元朗区| 天水市| 巍山| 纳雍县| 民丰县| 永寿县| 安塞县| 咸宁市| 郸城县| 蚌埠市| 会理县| 上栗县| 叶城县| 凤阳县| 禄丰县| 广灵县| 乡城县| 平山县| 峡江县| 凌云县| 吐鲁番市| 新安县|