2013-04-05 63 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