Скажем, у меня есть абстрактный родительский класс с именем «Родитель», который реализует метод «DisplayTitle». Я хочу, чтобы этот метод был одинаковым для каждого подкласса, который наследует «родительский». Я хотел бы получить ошибку компиляции, если подкласс пытается реализовать свой собственный метод «DisplayTitle». Как это сделать на C#. Я верю в Java, я бы просто отметил метод как «final», но я не могу найти альтернативы в C#. Я возился с «запечатанными» и «отмененными», но я не могу получить поведение, которое я ищу.Предотвращение подкласса C# от перезаписи метода
Например, в этом коде:
using System;
namespace ConsoleApplication1
{
class Parent
{
public void DisplayTitle() { Console.WriteLine("Parent's Title"); }
}
class ChildSubclass : Parent
{
public void DisplayTitle() { Console.WriteLine("Child's Own Implementation of Title");
}
static void Main(string[] args)
{
ChildSubclass myChild = new ChildSubclass();
myChild.DisplayTitle();
Console.ReadLine();
}
}
}
Я хотел бы получить ошибку компиляции, говоря, что «ChildSubClass» не может отменить «DisplayTitle». В настоящее время я получаю предупреждение - но похоже, что это то, что я должен был бы сделать, и я не знаю правильных атрибутов для маркировки метода.
Я предполагаю, что моя настоящая забота будет случайным злоупотреблением. У меня есть абстрактный класс в другом проекте, который имеет метод TurnOn и TurnOff. Не вдаваясь в подробности - этот класс будет несколько подклассами, чтобы представлять объекты реального мира. Однако все эти устройства будут включены и выключены одинаково. Я просто не хочу, чтобы я или кто-то другой пытались реализовать свои собственные отключение/включение команд для отдельных устройств без предупреждения какого-либо типа. – user1720817
@ user1720817: Хорошо было бы * быть * предупреждением. Я отредактирую предупреждение из вашего образца кода в свой ответ ... –
Да, есть предупреждение :) Его просто мой OCD, который заставляет меня хотеть, чтобы это была ошибка времени компиляции. Спасибо, что нашли время, чтобы написать это! – user1720817