Я реорганизую уже существующее решение. Я использую ReSharper, и я заметил, что правило проверки кода отключено. Существует абстрактный класс, который имеет сигнатуры метода bodyless с намерением заставить производные классы (которых их несколько). Насколько мне известно, это (или хотя бы) правильный способ сделать что-то. Однако ReSharper жалуется, что «член типа никогда не доступен через базовый тип» и что «используются только переопределения [методов]». Вот пример кода, который копирует этот вопрос в вопрос:Что не так с абстрактными методами bodyless в абстрактном классе?
public abstract class MyAbstractClass
{
public abstract void CreateSomething();
public abstract void ReadSomething();
public abstract void InsertSomething();
}
public class MyDerivedClass : MyAbstractClass
{
public override void CreateSomething()
{
throw new NotImplementedException();
}
public override void ReadSomething()
{
throw new NotImplementedException();
}
public override void InsertSomething()
{
throw new NotImplementedException();
}
}
Кстати, есть и другие члены, которые исключают создания абстрактного класса интерфейс. ReSharper предлагает внести изменения в 3 метода в абстрактном классе. Предложено сделать их защищенными, виртуальными, не абстрактными или просто удалить их из абстрактного класса и только иметь их в производных классах. Тот, кто изначально написал этот код, предназначенный для каждого производного класса для реализации этих методов, и для того, чтобы эти методы были общедоступными в производных классах. Итак, есть ли способ изменить это, чтобы сделать его более эффективным? Если нет, то почему ReSharper делает с этим проблему?
У вас есть общий анализ? Нижний правый угол, зеленый радар-вид-thingy. –
@JeroenVannevel - Да, я знаю. – bubbleking
Это говорит вам, что, поскольку он замечает, что в решении нет другого подкласса, который реализуется из базового класса, по существу делая его бесполезным. Удивительно, что он показывает это предупреждение с «публичными» классами - вы уверены, что они есть? Чтобы проверить мое предложение: добавьте второй класс к вашему решению и наследуйте его от абстрактного класса. Это устраняет предупреждение? –