Я нашел http://www.devproconnections.com/content1/catpath/database-development/topic/a-perfect-storm-linq-to-sql-dependency-injection-and-asp-net-providers/page/2 и имел такой же код, как на веб-странице:
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 в пользовательском RoleProvider? Или я должен попытаться ввести свойство?
Если собственность, то как? У меня есть For<RoleProvider>().Use(ctx => Roles.Provider);
в настоящее время. Но я не уверен, что значение Use должно быть Add, и я не уверен в синтаксисе для добавления зависимости в свойство.
Все еще нужна помощь
Я ужасно пытаюсь заставить miniprofiler не выдавать исключения Null ref, когда я просто перемещаю ObjectFactory StructureMap в свойство для init. Цель состоит в том, чтобы разрешить кэширование ролей. Я получаю ту же ошибку, что и эти вопросы мини-профилировщик nullreferenceexception Помогите настроить мини-профилировщик mvc с Linq для Sql
Я обновился до последней версии MVCMiniProfiler и попробовал его пакет MVC. Кажется, что профилирование не включено до инициализации пользовательского RoleProvider или инициализации свойств. Если я устанавливаю поле прямо из переопределенного метода GetRolesForUser, все в порядке. Если я сделаю это поле сторонником открытого свойства, я получу NULL-исключения в ProfiledDbCommand. Зачем?