Как обеспечить внедрение зависимостей через StructureMap для настраиваемого поставщика ролей с WCF? - PullRequest
5 голосов
/ 08 января 2010

Мы будем использовать пользовательский поставщик ролей с WCF. Переопределенный метод GetRolesForUser потребует использования уже существующего RoleRepository.

Теперь, используя классный класс, мы создадим его, используя StructureMap, и зависимость RoleRepository будет внедрена через конструктор.

Тем не менее, именно WCF создает класс пользовательского поставщика ролей, и это «сделано» декларируемо через атрибут roleManager в web.config.

На самом деле я не хочу жестко привязывать привязку RoleRepository к классу пользовательских ролей, но похоже, что мне придется.

Есть идеи?

1 Ответ

6 голосов
/ 08 января 2010

RoleProvider и связанные с ним типы являются наследием ASP.NET, которые печально известны тем, что не поддерживают DI. Для них требуется конструктор по умолчанию, и для их инициализации не предлагается никаких хуков. Это отстой, но так оно и есть.

В таких ситуациях лучшее средство - реализовать RoleProvider как Humble Object . Другими словами, RoleProvider должен соединить все зависимости, но оттуда он делегирует всю реализацию вашему собственному открытому и расширяемому API.

...