когда я зарегистрировал Unity в Моем приложении, оно выдает
Произошла ошибка при попытке создать контроллер типа 'InvoiceController'. Убедитесь, что у контроллера есть открытый конструктор без параметров
Я искал долго и упорно, но нашел много статей, и я последовал за ними все, но без успеха, который помог еще.
1 - установлен Unity
Файл ConfigureUnity:
2 - добавлены следующие два класса
Класс ConfigureUnity
public static void ConfigureUnity(HttpConfiguration config)
{
var container = new UnityContainer();
container.RegisterType<IInvoiceService, InvoiceService>();
container.RegisterType<IInvoiceRepository, InvoiceRepository>();
config.DependencyResolver = new UnityResolver(container);
}
-UnityResolver
public class UnityResolver : IDependencyResolver
{
protected IUnityContainer container;
public UnityResolver(IUnityContainer container)
{
if (container == null)
{
throw new ArgumentNullException("container");
}
this.container = container;
}
public object GetService(Type serviceType)
{
try
{
return container.Resolve(serviceType);
}
catch (ResolutionFailedException)
{
return null;
}
}
public IEnumerable<object> GetServices(Type serviceType)
{
try
{
return container.ResolveAll(serviceType);
}
catch (ResolutionFailedException)
{
return new List<object>();
}
}
public IDependencyScope BeginScope()
{
var child = container.CreateChildContainer();
return new UnityResolver(child);
}
public void Dispose()
{
Dispose(true);
}
protected virtual void Dispose(bool disposing)
{
container.Dispose();
}
}
3 - зарегистрируйте его в WebApiConfig.
public static void Register(HttpConfiguration config)
{
UnityConfig.ConfigureUnity(config);
}
Затем я использовал его в своем контроллере, как показано ниже
private IInvoiceService iInvoiceService;
private ApplicationDbContext _context;
public InvoiceController(IInvoiceService _iInvoiceService)
{
iInvoiceService = _iInvoiceService;
_context = new ApplicationDbContext();
}
Я пытался добавить пустой конструктор, и APIController всегда использует его.
Куда я иду не так? Я действительно не знаю, что делать.