Unity容器无法解决依赖关系

时间:2018-09-13 09:50:40

标签: c# asp.net-mvc dependency-injection unity-container

我对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 :(得分:1)

我终于找到了原因。我试图使用unity.mvc在Web API项目中实现统一,希望它是相同的。安装unity.Asp.webapi程序包后,该错误已解决。愚蠢的我。