Я использую Asp.Net MVC 5 и пытаюсь подключить свои зависимости для контроллера веб-API, но он не работает и говорит, что контроллеру нужен конструктор без параметров.
Я обновил контейнер единиц до v4, что означало обновление некоторых других ссылок, а именно unity.abstractions также v4.
Я использую unity.mvc, а не unity.mvc5.
В UnityConfig у меня есть
public static class UnityConfig
{
private static readonly Lazy<IUnityContainer> Container = new Lazy<IUnityContainer>(InitialiseContainer, LazyThreadSafetyMode.ExecutionAndPublication);
public static IUnityContainer ConfiguredContainer()
{
return Container.Value;
}
private static IUnityContainer InitialiseContainer()
{
var container = new UnityContainer();
//DependencyResolver.SetResolver(new Unity.Mvc5.UnityDependencyResolver(container));
//GlobalConfiguration.Configuration.DependencyResolver = new Unity.WebApi.UnityDependencyResolver(container);
// Auth
container.RegisterType<IAuthenticationManager>(new InjectionFactory(c => HttpContext.Current.GetOwinContext().Authentication));
container.RegisterType<ApplicationUserManager>(new InjectionFactory(c => HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>()));
container.RegisterType<IUserStore<LiApplicationUser>> (new InjectionFactory(c => new UserStore<LiApplicationUser>(new ApplicationIdentityDbContext())));
// Repository
container.RegisterType<LeisureInsureEntities>(new InjectionFactory(c => ContextFactory.Context()));
container.RegisterType<ICar, Volvo>();
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
return container;
}
}
Я прокомментировал, что код unity.mvc5 больше не нужен, поэтому он удален. Кажется, для этого требуется unity.abstractions v2, и он не принимает 4.
Когда я пытаюсь внедрить в контроллер webapi, мне также нужен Unity.WebAPI? это создает ту же проблему, что и Unity.Mvc5, и разработано тем же человеком, то есть мне не нравится моя более поздняя версия unity.abstractions.
В моем контроллере webapi я вижу, могу ли я подключить Volvo в качестве теста
public class StripeController : ApiController
{
private readonly IEndpointInstance _endpoint;
private readonly ICar car;
//public StripeController(IEndpointInstance endpoint)
//{
// _endpoint = endpoint;
//}
public StripeController(ICar newcar)
{
car = newcar;
}
Спасибо