问题描述
报的异常:System.Reflection.ReflectionTypeLoadException”类型的异常在mscorlib.dll中发生,但未在用户代码中进行处理其他信息:无法加载一个或多个请求的类型。有关更多信息,请检索LoaderExceptions属性。GetService这里不知道怎么传过来是控制器的工厂方法{Name="IControllerFactory"FullName="System.Web.Mvc.IControllerFactory"}详细代码如下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;}}#regionIDependencyResolverEmployeespublicobjectGetService(TypeserviceType){stringcontractName=AttributedModelServices.GetContractName(serviceType);returnContainer.GetExportedValueOrDefault<object>(contractName);}publicIEnumerable<object>GetServices(TypeserviceType){returnContainer.GetExportedValues<object>(serviceType.FullName);}#endregion}///gloall里面的代码如下//设置MEF依赖注入容器DirectoryCatalogcatalog=newDirectoryCatalog(AppDomain.CurrentDomain.SetupInformation.PrivateBinPath);MefDependencySolversolver=newMefDependencySolver(catalog);DependencyResolver.SetResolver(solver);
解决方案
解决方案二:
http://www.cnblogs.com/xiaokang088/archive/2012/02/21/2361631.htmlhttp://www.360doc.com/content/11/0830/16/7582031_144521508.shtml看了一些demo各种特性不喜欢我喜欢autofac
解决方案三:
mef虽然可以实现IOC,但它的本意是插件式开发,而不是依赖注入
解决方案四:
顺带说下,我喜欢ninject
解决方案五:
谢谢各位的回答
解决方案六:
引用2楼starfd的回复:
mef虽然可以实现IOC,但它的本意是插件式开发,而不是依赖注入
工厂不是和ioc差不多一样的功能么?也是祈祷隔离了能讲下ioc和工厂模式的区别么
解决方案七:
引用5楼qq383099979的回复:
Quote: 引用2楼starfd的回复:
mef虽然可以实现IOC,但它的本意是插件式开发,而不是依赖注入工厂不是和ioc差不多一样的功能么?也是祈祷隔离了能讲下ioc和工厂模式的区别么
工厂你还是要在代码中体现工厂的纯在~~用IOC,用构造函数注入的话,可以很隐藏~~~真解耦~