2015-12-21 2 views
2

У меня есть пользовательский класс, который реализует IPrincipal так:AutoFac и CustomPrincipal

public class UserPrincipal : IPrincipal 
{ 
    private readonly User _user; 

    public UserPrincipal(IIdentity identity, User user) 
    { 
     _user = user; 
     Identity = identity; 
    } 

    public bool IsInRole(string role) 
    { 
     return _user.Permissions.Any(x => x.Name == role); 
    } 

    public IIdentity Identity { get; } 
} 

является то, что правильный способ зарегистрировать его AutoFac?

builder.RegisterType<IPrincipal>().As<UserPrincipal>(); 

Я получаю сообщение об ошибке:

Исключение типа «System.ArgumentException» произошло в Autofac.dll, но не был обработан в пользовательском коде Дополнительная информация: Тип «System.Security.Principal .IPrincipal 'не присваивается службе «MyNamespace.Identity.UserPrincipal».

ответ

2

необходимо изменить регистрационный код. Зарегистрируйте конкретный тип (RegisterType<T>) и используйте тип интерфейса для отображения (As<T>).

builder.RegisterType<UserPrincipal>().As<IPrincipal>(); 
+0

Спасибо. Это решило проблему! – DAG

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