我正在创建一个派生自CollectionBase的列表,以便我可以使用自己的方法。这是在dll项目中完成的。 我只是想知道是否可以隐藏CollectionBase中的默认方法,以便在使用此列表时只显示我的方法。
答案 0 :(得分:1)
如果你派生自CollectionBase,那么不,那是不可能的。然后你的班级 是一个CollectionBase,所以继承了它的所有方法。隐藏你继承的东西的必要性清楚暗示你不应该使用继承。
您可以改为使用构图:
public class MyList
{
private List<int> _privateList = new List<int>();
public void MyMethod1()
{
// Do something
}
public void MyMethod2()
{
// Do something
}
public void Add(int x)
{
_privateList.Add(x);
}
// etc.
}
答案 1 :(得分:0)
如果是虚拟方法,您可以覆盖并更改为您想要的任何行为。如果它不是虚方法,则无法隐藏它们。
在任何情况下,您都可以使用new
(具有相同签名)重新声明方法,并使用Obsolete
属性进行标记。如果有人想要使用它们,这将强制编译器生成错误。在下面的示例中,调用Child.Method()
将生成编译器错误。这保证了没有人可以使用父方法。
public class Parent
{
public void Method()
{
}
}
public class Child : Parent
{
[Obsolete("This method should not be used", true)]
public new void Method()
{
}
}