Я пытаюсь получить Unity Container Dependency Injection, работая над автономным приложением owin. Я добавил NuGet пакет Unity для моего проекта, и создали свой класс UnityConfig следующим образом:Unity DI не работает в DI - конструктор контроллера по умолчанию, называемый вместо
public static class UnityConfig
{
public static void RegisterComponents()
{
var container = new UnityContainer();
// register all your components with the container here
// it is NOT necessary to register your controllers
// e.g. container.RegisterType<ITestService, TestService>();
container.RegisterType<IDBContext,UniversalCoatingsDbContext>();
container.RegisterType<IUserRepository,UserRepository>();
GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container);
}
}
Затем я создал мой контроллер, как это:
public class UserController : ApiController
{
private IUserRepository userRepo;
public UserController() {
Console.WriteLine("User controller default constructor");
}
//dependency injected value
public UserController(IUserRepository repo)
{
this.userRepo = repo;
Console.WriteLine("DI enabled constructor");
}
[HttpPost]
public JsonResult<MessageResponse> Register(UnhashedUser unhashed_user)
{
MessageResponse response = new MessageResponse();
if(ModelState.IsValid)
{
response = userRepo.createUser(unhashed_user);
}
else
{
response.message = "Invalid Request sent.";
}
return Json(response);
}
}
The UnityConfig.RegisterComponents () метод вызывается в конце моего метода Configuration() моего класса запуска (после установки промежуточного программного обеспечения). Когда я обращаюсь к URL этого контроллера, конструктор без параметров всегда вызывается, и поэтому экземпляр IUserRepository никогда не разрешается.
Я пропустил какой-то образ конфигурации? Любая информация очень ценится.
Попробуйте удалить конструктор по умолчанию – whymatter
Если я делаю, я получаю «конструктор по умолчанию не» исключение – tutiplain
Попробуйте сделать это частный – whymatter