StructureMap группировка именованных экземпляров - PullRequest
1 голос
/ 18 февраля 2011

Длинный пост - извините ....

Я делаю проверку ввода для службы WCF и использую IoC StructureMap для создания экземпляров соответствующих объектов проверки.У меня есть две разные группы проверки:

  1. Для проверки объекта: означает, что один входной параметр будет разрешен Ioc (например, Ioc.ResolveAll<IValidatorObject<InputParameter1>, .... <InputParameter2> ... и т. Д.),Если какие-либо правила найдены, вызывается метод validate.
  2. За проверку контекста: означает, что правила проверки вызываются на основе текущего контекста (явные роли).Контекстом может быть «депозитные деньги» или «открыть банковский счет».Проверка контекста обычно зависит от 2 или более входных параметров и является ключевым отличием проверки объекта и контекста.

Проверка входных данных выполняется при вызове события BeforeCall в IParameterInspector (поставщик / сервер)боковая сторона!).С этим событием я получаю строку, содержащую имя операции (или контекст) и объект [] с входными параметрами.

Проблема в том, что существует несколько правил проверки для одного контекста, и единственный способ, с помощью которого я понял, зарегистрировать контекст в Ioc, - это использовать именованные экземпляры.Однако я могу зарегистрировать только 1 именованный экземпляр pr.интерфейс.И интерфейс не уникально идентифицируется своей подписью.Например,

  • Правило контекста для «создания аккаунта»: IValidatorContext<User, Account>
  • Правило контекста для «депозита денег»: IValidatorContext<User, Account>

Итак, мой вопросесть ли возможность зарегистрировать контекст в StructureMap любым другим способом, кроме именованных экземпляров, или, возможно, способ группировки именованных экземпляров.

Альтернативным маршрутом является реализация явных интерфейсов для каждого контекста, чтобы метод сервиса DepositMoney мог выглядеть следующим образом:

public Response Deposit(IDepositMoney inputArguements)

, где IDepositMoney содержит входные параметры.

Так я здесь, или я могу как-то зарегистрировать контекст в StructureMap?Или я должен просто пойти дальше и использовать явный интерфейс (3-й вариант?)

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 25 февраля 2011

Завершил упаковку каждого набора входных параметров в контекст и использовал контекст для регистрации в StructureMap.Работает как шарм!

0 голосов
/ 18 февраля 2011

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

...