2013-04-05 81 views
1

我創建了一個類,這是字典類的擴展,它看起來如下:沉自定義詞典

public class PKMRelations : Dictionary<Guid, PKMRelation>, IDisposable 

我現在要勻PKMRelations的計數方法,使其返回值我想。通常情況下,我只需添加一些元素,但由於當前的配置,這是不可能的。

目前我無法弄清楚如何填充字典的Count方法。爲了能夠做到這一點,我必須創建一個特定的通用字典類的Shim。

這是否可能,如果有的話,我該怎麼做?

回答

2

Count不是Dictionary中的虛擬方法,因此您無法覆蓋它!但是,您可以使用新的關鍵字。因此,您可以添加以下幾個步驟

new int Count 
{ 
get 
{ 
    //Your intercept code here 
    return base.Count; 
} 
} 
+0

隱藏基本方法,它不會覆蓋它。你應該瞭解其含義。但仍然是一個好的和有用的答案。 – Thomas 2013-04-05 07:55:20

+0

的確,我可以將其用作臨時解決方法,但我希望能夠填充字典類。實際上所有的方法都應該是可調整的,虛擬的或者不可以的,所以這應該不成問題。 – CharlieBP 2013-04-05 08:02:18

+0

Count是IDictionary(一個接口)的一個屬性。這意味着您可以使用代理來使用屬性攔截來包裝接口。 Look @ Castle動態代理或其他IOC容器(具有攔截功能)。 – 2013-04-05 08:12:19