2015-05-05 4 views
0

У меня есть интерфейс IMyInterface, который в настоящее время имеет только один метод-член MyMethod1 с возвратом типа void. У меня этот интерфейс более чем в 50 классах, теперь предположим, что я изменяю тип возврата метода интерфейса от void до string.Как реализовать метод интерфейса более чем в 50 классах

Как изменить подпись метода во всех классах, реализующих интерфейс. Я знаю, что Visual Studio IDE делает это с возможностью замены всех. Просто любопытно узнать, есть ли другой метод.

+0

Это критическое изменение, ни один инструмент не волшебно собирается писать код для вас, что в настоящее время производит требуемое * строка * возвращаемое значение. Или используйте его. Кроме инструмента у вас между ушами. –

+0

Я согласен с его изменением, и инструмент не решит его полностью. Мне придется вручную сделать это с небольшой помощью VS IDE - что мой вопрос/любопытство - есть ли какой-либо другой метод. –

ответ

2

Я бы просто изменил подпись метода в интерфейсе и выполнил все сообщения об ошибках, которые вы получили.

В конце концов, в каждом методе вам нужно будет решить, что возвращать, поэтому вы должны действительно смотреть на каждый из этих классов индивидуально. Вы вполне можете найти, что инструменты рефакторинга предложили бы изменить подпись и добавить заявление aa return null; в конце каждого метода, но я бы сказал, что этот аспект изменения, скорее всего, потребует гораздо меньше усилий, чем при разработке каждая реализация должна возвратиться - и если вы сделаете все это вручную, вы с меньшей вероятностью случайно оставите одну реализацию с этим «по умолчанию» (вполне возможно неуместным) возвратом.

+0

Я знаю, этот аспект меньше, и это не очень хорошая практика проектирования, но в реальных сценариях это может быть возможно, и что инструменты рефакторинга помогают нам делать. У меня был аналогичный опыт в моем проекте - где мне приходилось инструмент resharper для устранения проблемы .. но было любопытно узнать, есть ли какое-либо другое решение. –

+0

@ hpatel02: Я действительно не последовал этому, боюсь. Я хочу сказать, что если вы автоматизируете вещи, вы с меньшей вероятностью можете подумать о том, какое изменение вы делаете, что может быть лучше всего реализовано по-разному в каждом классе. –

0

С Visual Studio a заменить все является единственным решением проблемы. Но Resharper позволит вам это сделать.

+0

Я знаю об этом .. Я уже упомянул в своем вопросе –

+2

Вы упоминаете Resharper в своем вопросе? Ты уверен? – MatteoSp

+0

no Visual Studio Я упомянул в своем вопросе - см. Мои другие комментарии –

0

Вы можете скачать ReSharper. Он имеет возможность рефакторинга подписи. Это не бесплатно, но вы можете получить бесплатную пробную 30-дневную пробную версию.

enter image description here

Смежные вопросы