1

我正在创建一个从 CollectionBase 派生的列表,以便我可以使用自己的方法。这是在 dll 项目中制作的。我只是想知道是否可以从 CollectionBase 中隐藏默认方法,以便在使用此列表时只显示我的方法。

4

2 回答 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 回答