创建没有默认方法的自定义列表

时间:2014-02-01 13:17:07

标签: c# list collectionbase

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

2 个答案:

答案 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()
    {
    }
}