我正在使用Microsoft Unity作为IoC容器,开发新的ASP.Net Web API项目。有一些疑惑不确定哪种方式是正确的。
如果我设置System.Web.Http.HttpConfiguration
的DependencyResolver
,那么我就能够调用有依赖关系的API控制器,而且这些依赖关系会被Unity框架解决。但是对于像HomeController
这样的MVC控制器,Unity无法注入任何依赖项,除非我在System.Web.Mvc
中设置DependencyResolver
。
API控制器的依赖关系已经解决,但MVC控制器的依赖关系没有。如果我添加下面的代码:
public class IocConfig
{
public static void Register(HttpConfiguration config)
{
var container = UnityConfig.GetConfiguredContainer();
FilterProviders.Providers.Remove(FilterProviders.Providers.OfType<FilterAttributeFilterProvider>().First());
FilterProviders.Providers.Add(new UnityFilterAttributeFilterProvider(container));
config.DependencyResolver = new UnityResolver(container);
//DependencyResolver.SetResolver(new UnityDependencyResolver(container));
}
}
已成功解决MVC Controller依赖关系,但API Controller依赖关系未能解决。如果我添加以下代码:(取消注释该行)
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
告诉您一下,项目模板是ASP.Net Web API,我正在使用Microsoft.Unity。
我应该设置DependencyResolver
吗?还是说我做错了什么?