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