0

я нашел http://www.devproconnections.com/content1/catpath/database-development/topic/a-perfect-storm-linq-to-sql-dependency-injection-and-asp-net-providers/page/2 и имел похожий код как с веб-страницы:Есть ли лучший способ использовать Structuremap для ввода зависимостей в пользовательский RoleProvider?

public class CustomProvider : MembershipProvider, IMembershipProvider 
{ 
    private IUserRepository _userRepo; 

    // this .ctor is used via unit tests (as a seam) 

    public CustomProvider(IUserRepository repo) 
    { 
     this._userRepo = repo; 
    } 

    // requisite parameter-less constructor: 

    public CustomProvider() 
    { 
     // do NOTHING here 
    } 

    public override bool ValidateUser(string username, string password) 
    { 
     // HACK: 
     IUserRepository repo = this._userRepo ?? ObjectFactory.GetInstance<IUserRepository>(); 
     SiteUser user = repo.GetUserByEmailAddress(username.ToLower()); 
     if (user == null) 
      return false; 

     if (!user.Active || !user.Verified) 
      return false; 

     if (user.PassPhrase.IsNullOrEmpty()) 
      return false; 

     // do other verification... etc 
    } 
} 

Кроме шахты является обычай RoleProvider. Вызывает ли ObjectFactory.GetInstance приемлемый способ встраивания зависимостей в RoleProvider? Я попытался настроить свойство, чтобы ввести зависимость, но я не мог заставить это работать. Я уверен, что мой реестр StructureMap ошибочен. Но трудно найти правильный путь, когда документация устарела.

Итак, для приложения ASP.NET MVC3 вызывает ObjectFactory ok в пользовательском RoleProvider? Или я должен попытаться ввести свойство?

Если недвижимость, как? У меня есть For<RoleProvider>().Use(ctx => Roles.Provider);. Но я не уверен, что Use должен быть Add, и я не уверен в синтаксисе, чтобы вложить зависимость в свойство.

все еще нужна помощь У меня ужасное время, пытаясь сделать miniprofiler не бросайте Null исключения реф, когда я просто переместить StructureMap ObjectFactory свойству для инициализации. Цель состоит в том, чтобы позволить кешировать роли. Я получаю ту же ошибку, что и эти вопросы mini-profiler nullreferenceexceptionHelp Configure mvc mini profiler with Linq to Sql

Я обновил до последнего MVCMiniProfiler и попробовал его MVC-пакет. Кажется, что профилирование не включено до того, как пользовательский RoleProvider инициализируется или свойства инициализируются. Если я установил поле прямо из переопределенного метода GetRolesForUser, все будет в порядке. Если я сделаю это поле защитником общедоступной собственности, я получаю исключения NULL в ProfiledDbCommand. Зачем?

ответ

2

Шаблон «поставщика» Microsoft не работает с инъекцией зависимостей из-за его зависимости от статики и одиночных чисел. Если вам нужно использовать Провайдера, просто выполните его местоположение через ObjectFactory.GetInstance и перейдите к нему.

+0

У меня есть. Странно перемещая объект ObjectFactory.GetInstance в свойство и проверяя нулевое значение, выдает MvcMiniProfiler. Не знаю, почему. Но похоже, что это может иметь какое-то отношение к порядку вещей, которые инициализируются, потому что это пустое исключение. Не имеет ничего общего с StructureMap. – nportelli

 Смежные вопросы

  • Нет связанных вопросов^_^