ASP.NET: как переопределить не виртуальный метод из скомпилированной сборки? - PullRequest
2 голосов
/ 19 июля 2011

Я в некотором затруднении.

Мне было поручено поддерживать существующее веб-приложение ASP.NET, для которого исходный код недоступен - весь код скомпилирован и помещен в папку bin.

Теперь мне нужно изменить несколько методов реализации, я впервые сталкиваюсь с такой ситуацией, поэтому я буду очень признателен за ваши предложения и рекомендации относительно лучшего способа сделать это.

Ответы [ 3 ]

1 голос
/ 19 июля 2011

Вам нужно изменить реализацию так, чтобы все внутренние ссылки внутри вашей устаревшей сборки использовали новую реализацию?Если это так, это не может быть сделано, так как для этого потребуется изменить устаревшие двоичные файлы (по крайней мере, таким образом, чтобы это было невозможно поддерживать).контролировать), я предлагаю вам написать прокси и заменить все ссылки на устаревшую библиотеку прокси.Это позволяет постепенно расширять / изменять поведение устаревшей библиотеки.В дальнейшем это позволит вам заменить устаревшую библиотеку чем-то другим.

1 голос
/ 19 июля 2011

Вместе с тем, что сказал @codymanix.

Просто декомпилируйте сборку с помощью ILDASM. Сделайте необходимые методы виртуальными (или незапечатанными). Перекомпилируйте с ILASM. Готово.

Возможно, вам придется исправить вызовы этих методов, чтобы использовать callvirt вместо call.

1 голос
/ 19 июля 2011

Вы можете попытаться декомпилировать его, например, с помощью инструмента Reflector.Реальный вопрос: если у вас нет исходного кода, можете ли вы изменить это приложение?

...