У меня есть абстрактный класс, который имеет метод с параметром params, как показано ниже. Я хочу переопределить и скрыть этот метод с помощью метода, который принимает определенное количество параметров вместо params в наследующем классе.Скрытие/переопределение метода базового класса с параметрами в C#
public abstract class BaseClass{
public List<int> list = new List<int>();
public void Add(params int[] numbers){
list.AddRange(numbers);
}
}
public class ChildClass : BaseClass{
public override void Add(int a, int b, int c){
base.Add(a, b, c);
}
}
Это работает, но добавить функцию базового класса по-прежнему видна снаружи и добавить функцию в дочернем классе, кажется, не заменить его. Есть ли способ?
Спасибо. Я думаю о других способах реализации этого. Я добавил еще 2 абстрактных класса в середине и сделал метод защиты базы. Один из них предоставляет метод и один шкуры. Это делает мою диаграмму классов более сложной. Существует также способ исключения исключений при использовании нежелательного количества параметров, но я не буду чувствовать себя в безопасности. –
@SirKurt: Если каждый конкретный класс имеет другой набор открытых методов, абстрактный базовый класс (с предположительно только защищенными методами) не очень полезен с точки зрения клиента. Это может позволить вам некоторое повторное использование реализации, но это не сильно отразится на абстракции клиента. –
Хотя, если ваша единственная мотивация заключается в повторном использовании реализации, возможно, просто попросите своих клиентов использовать композицию вместо наследования (или вызвать вызов статического метода полезности). – Brian