Custom MembershipProvider: для этого объекта не определен конструктор без параметров
У меня есть собственный класс MembershipProvider, который наследуется от MembershipProvider, который принимает два параметра:
public class CustomMembershipProvider : MembershipProvider
{
private readonly ISecurityRepository _securityRepository;
private readonly IUserRepository _userRepository;
public CustomMembershipProvider(ISecurityRepository securityRepository, IUserRepository userRepository)
{
...
}
public override MembershipUser GetUser(string username, bool userIsOnline)
{
...
}
... etc
}
Файл конфигурации для этого выглядит примерно так:
<membership defaultProvider="CustomMembershipProvider">
<providers>
<clear />
<add name="CustomMembershipProvider" type="Library.Membership.CustomMembershipProvider" />
</providers>
</membership>
Это нормально работает в основном в моем веб-приложении для входа и выхода. Я использую Unity для DI и имею необходимые настройки классов в моем классе Boostrapper.cs.
Однако недавно я столкнулся с проблемой, когда хотел создать пользовательский класс User и вызвалMembership.GetUser метод. Я получаю следующее исключение, когда я делаю:
{"No parameterless constructor defined for this object. (C:\\*app path*\\web.config line 43)"}
Строка 43 в моем конфигурационном файле указывает на провайдера пользовательского членства, который я разместил выше. Я думаю, что в другом месте приложение использует Unity для разрешения этих параметров, но при использовании класса Membership это не так.
Есть ли способ, которым я могу сообщить приложению, как разрешить эти зависимости, или, если нет, есть ли способ добавить эти зависимости моему провайдеру членства без использования конкретной реализации?
РЕДАКТИРОВАТЬ 1:
Вот пользовательский класс User:
public class User : MembershipUser
{
public int UserId { get; set; }
public string Username { get; set; }
public string Email { get; set; }
public DateTime LastLoggedOnDate { get; set; }
...
}
РЕДАКТИРОВАТЬ 2:
В моем классе провайдера пользовательского членства вот как выглядит метод GetUser:
public override MembershipUser GetUser(string username, bool userIsOnline)
{
return _userRepository.GetUser(username);
}