[英]What is the equivalent of Java's AbstractMap in C#?
我需要創建一個公開IDictionary<K,V>
接口的對象,但我不想填寫整個接口實現。
擁有相當於Java的AbstractDictionary會很不錯,這使得你很少能夠推動完整的字典(HashMap,在Java中):
Wintellect的PowerCollections庫包含一個DictionaryBase
類( 源代碼 ),它實現了大多數標准IDictionary <K,V>接口。 從課堂上的文檔評論:
DictionaryBase是一個基類,可用於更輕松地實現泛型IDictionary <T>和非泛型IDictionary接口。
要將DictionaryBase用作基類,派生類必須覆蓋Count,GetEnumerator,TryGetValue,Clear,Remove和索引器集訪問器。
System.Collections.Generic
命名空間包含IDictionary<K,V>
三種實現: Dictionary<TKey, TValue>
, SortedDictionary<TKey, TValue>
和SortedList<TKey, TValue>
。
如果我正在構建自己的字典類,我將從System.Collections.ObjectModel.KeyedCollection繼承。
編輯所有不懂API設計的人。
您永遠不應該從公共屬性或函數返回通用List或Dictionary。 你應該返回專門為此目的建造的課程。 這樣您可以在以后添加其他功能。
Dictionay<integer, Order> Orders() {get;}
CustomerOrders Orders() {get;}
使用第二個版本,您可以執行諸如添加Total屬性並讓用戶實際找到它之類的操作。
從理論上講,你可以返回一個添加Total屬性的Dictionary子類,但是用戶必須知道你正在做它,並且B.包含一個轉換來獲取屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.