Я создаю веб-приложение asp.net MVC2, используя StructureMap.Я создал собственный MembershipProvider.Я правильно инициализирую его при запуске, вызывая:
x.For<MembershipProvider>().Use(Membership.Provider);
x.For<IMembershipProvider>().Use<CPOPMembershipProvider>();
В Initialize () я имею в виду создание экземпляра репозитория, который будет использоваться для доступа к данным пользователя в базе данных.
Итак, я добавляю частную собственность в свой пользовательский MembershipProvider:
private IUserRepository userRepository;
И внутри Initialize () я вызываю:
IUserRepository userRepository = ObjectFactory.GetInstance<IUserRepository>();
Сначалаэто "хорошая практика" для создания хранилища в моем пользовательском MembershipProvider?
Во-вторых, когда я его реализую, мне кажется, что я не могу получить доступ к любой конфигурации StructureMap, которая была правильно настроена в global.asax.Когда я вызываю Debug.WriteLine (ObjectFactory.WhatDoIHave ()) непосредственно перед приведенной выше строкой GetInstance (), никакие данные конфигурации отсутствуют (что я вижу из той же строки Debug, помещенной в global.asax), и я получаюНе определен экземпляр по умолчанию для PluginFamily CPOP.Domain.Contracts.Repositories.IUserRepository "ошибка при вызове GetInstance ().Это почему?Похоже, у меня есть другой контейнер внутри MembershipProvider.