【发布时间】:2016-02-06 13:24:02
【问题描述】:
在 Web API 项目中使用 Unity,我以标准方式在 UnityContainer 中注册了一个对象(类型为 MyService 实现 IMyService)。
public static class UnityConfig {
public static void RegisterComponents() {
var container = new UnityContainer();
GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container);
// Register my type
container.RegisterType<IMyService, MyService>();
}
}
我像这样在我的一个类中解析对象(它不是控制器,所以我不能使用构造函数注入):
// Get object from container
var myService = (IMyService)GlobalConfiguration.Configuration.DependencyResolver
.GetService(typeof(IMyService));
这是正确的方法吗? 看起来很笨拙。有没有更简洁的方式进行这个调用,比如直接访问容器的Resolve<T>()方法?
(我可能会在这里分心,但我不熟悉将 Unity 与 Web API 结合使用并试图了解最佳实践。)
【问题讨论】:
-
对于非控制器,为什么不将实例保持在静态(单例)中并从那里访问它?
-
你从哪里调用代码?你说它是一个非控制器。是服务吗?用在什么地方?
标签: .net asp.net-web-api asp.net-web-api2 unity-container