Внедрение зависимостей с Unity MVC5 - InjectionFactory устарела - PullRequest
0 голосов
/ 20 сентября 2019

В последней версии Unity (MVC5) InjectionFactory устарела.Ниже приведено предупреждение «Устаревшее», которое вы получите при попытке его использовать.

[Obsolete("InjectionFactory has been deprecated and will be removed in next release. Please use IUnityContainer.RegisterFactory(...) method instead.", false)]

К сожалению, у меня недостаточно знаний об этом API, чтобы внести соответствующее исправление.

Как видно изКод ниже я пытаюсь зарегистрировать IAuthenticationManager, используя старое решение, которое использует InjectionFactory.Кто-нибудь знает, как это будет выглядеть с новым решением?

public static void RegisterComponents()
{
    var container = new UnityContainer();

    container.RegisterType<IAuthenticationManager>(new InjectionFactory(c => HttpContext.Current.GetOwinContext().Authentication));

    DependencyResolver.SetResolver(new UnityDependencyResolver(container));
}

Ниже я также включил контроллер, который ссылается на этот объект.

public class AccountController : Controller
{
    private AdAuthenticationService _signInService;

    public AccountController() { }

    public AccountController(IAuthenticationManager signInManager)
    {
        this._signInService = new AdAuthenticationService(signInManager);
    }

    etc...

Дайте мне знать, если у вас все естьлюбые другие вопросы и спасибо за помощь.

1 Ответ

0 голосов
/ 20 сентября 2019

Я чувствую себя немного глупо.Я потратил время, чтобы прочесть предупреждение, и ответ был тут же.

Замена одной строки:

Старый:

container.RegisterType<IAuthenticationManager>(new InjectionFactory(c => HttpContext.Current.GetOwinContext().Authentication));

Новый:

container.RegisterFactory<IAuthenticationManager>(c => HttpContext.Current.GetOwinContext().Authentication);
...