我正在创建一个从 CollectionBase 派生的列表,以便我可以使用自己的方法。这是在 dll 项目中制作的。我只是想知道是否可以从 CollectionBase 中隐藏默认方法,以便在使用此列表时只显示我的方法。
问问题
45 次
2 回答
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.
}
于 2014-02-01T13:32:14.463 回答
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()
{
}
}
于 2014-02-01T13:30:55.253 回答