2011-08-07 30 views
2

我有从myCollection继承的类myCollection。 想隐藏myCollection中的add方法。 使用私人新修饰符,但其仍然可见。 这不可能吗?用新的修饰符隐藏基类公用方法

基类

public void Add(TKey key, TValue value) 
    { 
     Insert(key, value, true); 
    } 

MyCollection的

private new void Add(string key, MyOtherClass myClass) 
    { 
     base.Add(key, myClass);  
    } 
+0

我不认为隐藏它是个好主意。 – BoltClock

+4

如果您需要隐藏继承的函数并更改其可访问性,通常是因为您的程序设计存在缺陷。 – Dalmas

回答

7

不,这是不可能的。

您无法更改继承的成员的可访问性。

您可以使用组合而不是继承,只显示您想要的功能(通过将调用委托给组合对象)。如果您依赖代码中其他地方的继承链,这可能不是一个选项。

0

它并未隐藏,因为Add in baseclass的方法签名与mycollection类中的方法不匹配。

+0

从基类的签名我假设这些是通用参数(TKey,TValue)。使用实际泛型类型的派生类没有错。 – Oded

+0

哦,有趣的是,我没有考虑到这一点。感谢您的解释。 –