Инъекция зависимости Gotchas - PullRequest
2 голосов
/ 16 августа 2010

Есть ли у кого-нибудь список ссылок на www для хорошего списка DI-ошибок?Я пытался внедрить элементы управления, используя DI, в приложении asp.net webforms и обнаружил, что при рекурсивной сборке ViewState теряется.Также был бы полезен список статей, в которых разработчик должен знать об ошибках, прежде чем делать большой шаг в реализации IoC / DI в приложении.

1 Ответ

3 голосов
/ 16 августа 2010

У самого DI нет ошибок. Или, точнее, это будет похоже на перечисление общего программирования полученных ошибок, как на передачу пустой ссылки, а затем на ее отсутствие.

при рекурсивной сборке ViewState потерян

«Наращивание», как говорят некоторые контейнеры, как правило, плохая идея, и ее следует избегать, когда это возможно. Взгляните на Windsor FAQ по каким-то веским причинам против накопления. Это относится ко всем контейнерам IoC.

В частности, в вашем случае кажется, что происходит то, что наращивание происходит после LoadViewState () элемента управления (или LoadPageStateFromPersistenceMedium ()) страницы, поэтому он делает состояние представления недействительным. Возможно, ваш контейнер IoC предоставляет базовый класс управления, который уже позаботился об этом, и вы забыли его унаследовать.

ИМХО, работа с DI в WebForms настолько хакерская (именно в этом случае, например), что я предпочитаю прибегать к расположению службы (только для страниц и элементов управления WebForms!). Просто, и никаких странных взломов не требуется.

Теперь, IoC + DI может иметь некоторые ошибки, например проблемы жизненного цикла / объема. Игорь Брейц очень подробно описывает это в этой статье . Вы должны иметь это в виду, особенно в сложных / больших приложениях с большим количеством компонентов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...