Я создаю список, полученный из CollectionBase, так что я могу использовать свои собственные методы. Это сделано в проекте dll. Я просто хотел узнать, можно ли скрыть методы по умолчанию из CollectionBase, так что при использовании этого списка появляются только мои методы.Создать собственный список без методов по умолчанию
ответ
Если его виртуальный метод, вы можете переопределить и изменить любое поведение. Если это не виртуальный метод, вы не можете скрыть их.
В любом случае вы можете повторно объявить метод с помощью 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()
{
}
}
Если вы вышли из CollectionBase, то нет, это невозможно. Затем ваш класс является a 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.
}