Ну, это зависит от того, как часто класс используется во всем коде.Вы, вероятно, захотите создать интерфейс IAuthenticationManager
, который включает методы, соответствующие статическим методам, которые вы хотите заменить методами экземпляра.Затем вы можете создать класс AuthenticationManager
, который реализует интерфейс и принимает зависимость UserController
через его конструктор.
Затем вам нужно будет заменить все статические сайты вызова методов методами экземпляра.Возможно, вы захотите внедрить IAuthenticationManager
в классы через конструктор или свойство.При необходимости вы также можете передать IAuthenticationManager
методам (на сайтах вызовов) в качестве параметра.
К сожалению, замена статических методов требует довольно большого количества рефакторинга.Это стоит усилий, хотя.Это открывает двери для модульного тестирования.
Имейте в виду, что вы всегда можете выполнить рефакторинг по одному методу за раз, извлекая интерфейс для одного из статических методов.Выполняйте каждый метод по одному, чтобы использовать пошаговый подход к рефакторингу (другими словами, каждый метод получает свой собственный интерфейс).
Я бы порекомендовал взглянуть на эту книгу, если вы можете:1014 * Эффективно работает с устаревшим кодом .Отличная книга, которая охватывает все подобные ситуации.