我正在尝试让Unity Container Dependency Injection在自托管的owin应用程序上运行。我已将Unity nuget包添加到我的项目中,并按如下方式设置了UnityConfig类:
#[doc(hidden)]
然后,我按照这样设置我的控制器:
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);
}
}
在我的Startup类的Configuration()方法结束时调用UnityConfig.RegisterComponents()方法(在设置所有中间件之后)。当我访问此控制器的URL时,始终会调用无参数构造函数,因此永远不会解析IUserRepository的实例。
我错过了某种配置模式吗?任何信息都非常感谢。
答案 0 :(得分:0)
我修改了UnityConfig类,将容器公开为静态变量。然后,
我把它添加到我的启动类:
//set up dependency injection
UnityConfig.RegisterComponents();
config.DependencyResolver = new Unity.WebApi.UnityDependencyResolver(UnityConfig.container);
app.UseWebApi(config);