Контейнер Unity не разрешает зависимости - PullRequest
0 голосов
/ 13 сентября 2018

Я довольно новичок в DI паттерне. Я пытался реализовать DI в одном из моих классов контроллера. Но услуга не разрешена Unity. Вот что я сделал:

Использование пакета Unity.MVC5: у меня есть следующий класс:

public static class UnityConfig
{
    public static void RegisterComponents()
    {
        var container = new UnityContainer();
        container.RegisterType<IProductServices, ProductServices>();

        // register all your components with the container here
        // it is NOT necessary to register your controllers

        // e.g. container.RegisterType<ITestService, TestService>();

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

Я зарегистрировал свой сервис в вышеуказанном классе.

затем я вызвал этот класс из global.asax, как показано ниже:

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    GlobalConfiguration.Configure(WebApiConfig.Register);
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
    UnityConfig.RegisterComponents();
}

Следующий мой контроллер:

private readonly IProductServices productServices;

/// <summary>
/// Public constructor to initialize product service instance
/// </summary>
public ProductController(IProductServices p)
{
    this.productServices = p;
}

Когда я запускаю приложение, оно выдает ошибку о том, что "нет конструктора без параметров". Я делаю что-то неправильно? Любая помощь будет оценена. Все учебники, которые я исследовал, делают то же самое.

1 Ответ

0 голосов
/ 13 сентября 2018

Я наконец нашел причину. Я пытался реализовать единство в проекте веб-API с использованием unity.mvc, надеясь, что это будет то же самое. Ошибка была устранена после установки пакета unity.Asp.webapi. Глупый я.

...