问题描述
一直在使用MEF做解耦,在项目中用的一直都是好的,包括在asp.netmvc4中也没问题,今天专门建立WebApi进行测试,发现同样在Controller中能使用的在apiController中倒入时对象一直都是null.引入MEF的文件如下:publicclassMefDependencySolver:IDependencyResolver{privatereadonlyComposablePartCatalog_catalog;privateconststringMefContainerKey="MefContainerKey";publicMefDependencySolver(ComposablePartCatalogcatalog){_catalog=catalog;}publicCompositionContainerContainer{get{if(!HttpContext.Current.Items.Contains(MefContainerKey)){HttpContext.Current.Items.Add(MefContainerKey,newCompositionContainer(_catalog));}CompositionContainercontainer=(CompositionContainer)HttpContext.Current.Items[MefContainerKey];HttpContext.Current.Application["Container"]=container;returncontainer;}}#regionIDependencyResolverMemberspublicobjectGetService(TypeserviceType){stringcontractName=AttributedModelServices.GetContractName(serviceType);returnContainer.GetExportedValueOrDefault<object>(contractName);}publicIEnumerable<object>GetServices(TypeserviceType){returnContainer.GetExportedValues<object>(serviceType.FullName);}#endregion我一直怀疑Controller与apiController处理上不一样,MEF不识别。或者需要在上面代码里加扩展?请教各位大侠!
解决方案
解决方案二:
请问这个问题解决了吗?如何解决的。
解决方案三:
IOC用Microsoft.Practices.Unity,这个很不错,网上很多资源的哈
解决方案四:
楼主这个问题解决了没有?俺也遇到了。。。
解决方案五:
我之前是用Autofac在webapi框架下也不可以实现注入要添加Autofac的webapidll才可以不知道你的是否也需要添加特殊的dll
解决方案六:
请问这个问题解决了吗?
解决方案七:
Global.cs中加入://installwebapimefSystem.Web.Http.GlobalConfiguration.Configuration.DependencyResolver=solver;
就可以了