Обновление кода, найти все объекты типа - PullRequest
0 голосов
/ 16 ноября 2011

Задача:

Перечеркнуть весь код во всем решении и обернуть все вызовы методов веб-сервиса в другой вызов метода ws, который принимает GUID (это сценарий входа в систему)

Фон: Сотни веб-сервисов, добавить токен безопасности. Как мне объяснили, когда меня назначили на задание, мы делаем это так, потому что, если в будущем необходимо будет внести некоторые изменения в безопасность и т. Д., Мы можем просто сделать это за WrappermethodClass вместо того, чтобы менять сотни веб-сервисов

Попытка и ошибка:

Найти все ссылки: слишком много данных, возвращено более 1000 обращений, большинство из которых бесполезны, поскольку являются только ссылками на объекты.

Переименуйте WS, чтобы все ссылки работали, создайте проект, над которым я работаю, и исправьте по ходу работы: хорошо работает со службами, не являющимися неотъемлемой частью функциональности, но как только я делаю это с важным, все равно, что я снимал Решение через мозг, все чертовски, и VS просто перестает пытаться.

Текущее решение: Откройте все соответствующие документы, найдите, выберите Все открытые документы, пропустите.

Вопрос: Как мне сделать это максимально эффективно?

Код (до):

wsGeneric wsGen = new wsGeneric();
wsGen.DoSomething();

Код (после): WrapperMethodClass.DoCheck принимает параметры (Action, GUID),

wsGeneric wsGen = new wGeneric();

wrapperMethodClass.DoCheck((g) =>
{ wsGen.UserInfo.token = g.ToString();
  wsGen.DoSomething();
},Shell.token.Value);

Ответы [ 3 ]

0 голосов
/ 16 ноября 2011
  • Если все ваши веб-сервисы наследуют от интерфейса или базового класса, вы можете изменить этот метод для добавления параметра, у всех наследующих классов также будет этот параметр.
  • Если вы передаете объект входа в систему каждому веб-сервису, вы можете добавить элемент GUID к этому объекту, и все готово.

Было бы намного проще, если бы вы показали нам некоторый код, некоторые интерфейсы функций, которые вы должны изменить, и как.

0 голосов
/ 17 ноября 2011

Лучшим решением может быть использование PostSharp для добавления чеков к вашим услугам. Это решит вашу бизнес-проблему (вам нужно только обновить ваши аспекты) и будет намного менее подвержено ошибкам, чем ваш текущий подход, поскольку вам не нужно беспокоиться о том, что какой-то новый разработчик забудет сделать DoCheck.

Отсутствие необходимости находить все ссылки является дополнительным преимуществом.

0 голосов
/ 16 ноября 2011

У вас нет какого-то интерфейса или класса, где вы уже изменили сигнатуру метода? Если вы изменили свой веб-сервис и ваш Код все еще компилируется, я бы сказал, что вы сделали что-то не так или я не понимаю вопроса.

Обновление: Я до сих пор не понимаю. Я думаю, что у вас есть эти варианты:

  • Измените сигнатуру метода (все вызовы должны быть прерваны сейчас, исправьте все ошибки, которые выдает, и вы должны сделать)

  • Найдите все ссылки (метода, а не вашего класса веб-сервиса) и измените вызовы

  • Если указанное выше невозможно, используйте «Найти в файлах» и найдите имя метода

...