Знаете ли вы, как быстро реализовать метод (ы) из интерфейса в класс. Если да, то как это сделать?
Ситуация: у меня есть интерфейс, который используют более 15 конкретных классов. Я добавил новый метод, и мне нужно реализовать этот новый метод во всем конкретном классе.
Обновлять
Весь мой конкретный класс реализует интерфейс и весь метод в порядке. Позже я добавлю в интерфейс новый метод. Чтобы иметь возможность компилировать, мне нужно реализовать новый метод во всех классах. Я не хочу переходить по одному к каждому классу, чтобы реализовать метод. Есть ли способ, например «Щелчок правой кнопкой мыши по новому методу» в интерфейсе, который войдет во все конкретные классы и все автоматически в новый метод. Таким образом, мне не придется открывать весь класс?
У меня Resharper 3.0. Я вижу Безопасное удаление, которое позволяет мне удалить метод, но не вижу ничего, что можно «добавить».
Да уж, класс Реализует интерфейс уже. Я изменил интерфейс, поэтому теперь мне нужно открыть весь класс для реализации нового метода.
добавьте "какой-то класс: какой-то интерфейс" вручную, затем используйте быстрые действия для автоматического создания заглушек методов.
Что-то в моем понимании говорит о том, что интерфейс, реализуемый 15 классами, означает, что либо интерфейс слишком общий (т.е. требует разделения на несколько интерфейсов), либо существует потребность в как минимум 1 абстрактном базовом классе.
Я не спрашиваю, как реализовать интерфейс. Хотелось бы быстрее менять конкретный класс. Я спрашиваю, есть ли у кого-нибудь идея. Если вы этого не сделаете, я понимаю ... Ответ aku хорош, поскольку он быстрее, чем проверка 1 на 1 конкретный класс.





Предоставьте абстрактный базовый класс с реализацией по умолчанию, а затем все ваши конкретные классы наследуют этот абстрактный класс.
Не знаю, почему это было -1 ... это правильный ответ. Если только вы не искали «скопировать и вставить».
Возможно, Даок искал помощь IDE, а не решение кода.
Я не могу наследовать абстрактный класс. Класс может наследовать только 1 класс и множество интерфейсов. Я больше ищу способ сделать это, см. Ответ Аку. Я не ищу это решение.
Ваш абстрактный класс также может наследовать все, что вам нужно.
Не все эти конкретные классы наследуют один и тот же класс. Поэтому мне пришлось бы создать много абстрактных классов. Это станет раздутым без реальной причины.
да,
добавьте интерфейсный класс в каждый из 15 классов. Пример:
public class MyClass:MyInteface{
}
затем наведите указатель мыши на первую букву имени интерфейса и выберите в раскрывающемся списке «Явно реализовать интерфейс».
Я предполагаю, что вы используете Visual Studio.
Я знаю этот способ ... Я ищу что-то быстрее.
Хотя это хороший способ заглушить функции класса, IDE добавит исключение («Эта функция еще не реализована» или что-то в этом роде) к функции. Убедитесь, что вы удалили это, если ваш класс не собирается ничего делать с добавленной функцией, иначе у вас возникнут проблемы позже.
Поскольку вы упомянули, что у вас установлен ReSharper, вот способ быстро реализовать это:
Также вы можете использовать функцию ReSharper "анализ всего решения" - она быстро найдет все классы, которые не реализуют этот новый метод.
Обновлено:
Наконец я нашел быстрый способ В самом деле:
internal interface IFoo
{
void Boo()
{
}
}
class Boo:IFoo
{
}
class Foo: IFoo
{
}
Это единственный на данный момент ответ, который выглядит «быстро». Thx aku.
ReSharper - потрясающий инструмент, а? А вы, сделал, украдите мой ответ ;-)
С помощью Resharper вы можете выбрать новый элемент интерфейса (навести на него курсор) и нажать Alt + Enter или щелкнуть значок молотка, затем
Реализуется или ИСПОЛЬЗУЕТСЯ интерфейс 15 классами?