我对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;
}
当我运行该应用程序时,它抛出一个错误,提示“不存在无参数构造函数”。难道我做错了什么?任何帮助将不胜感激。我研究过的所有教程都做同样的事情。
答案 0 :(得分:1)
我终于找到了原因。我试图使用unity.mvc在Web API项目中实现统一,希望它是相同的。安装unity.Asp.webapi程序包后,该错误已解决。愚蠢的我。