asp.net mvc中使用MEF(IOC容器的问)

问题描述

报的异常: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,用构造函数注入的话,可以很隐藏~~~真解耦~

时间: 2024-11-29 14:19:51

asp.net mvc中使用MEF(IOC容器的问)的相关文章

ASP.NET MVC中使用Unity Ioc Container

在MVC中,控制器依赖于模型对数据进行处理,也可以说执行业务逻辑.我们可以使用依赖注入(DI)在控制层分离模型层,这边要用到Repository模式,在领域驱动设计(DDD)中,Repository翻译为仓储,顾名思义,就是储存东西的仓库,可以理解为一种用来封装存储,读取和查找行为的机制,它模拟了一个对象集合.使用依赖注入(DI)就是对Repository进行管理,用于解决它与控制器之间耦合度问题,下面我们一步一步做一个简单示例. 安装Unity 首先我们需要新建一个UnityMVCDemo项目

ASP.NET MVC中你必须知道的13个扩展点

ScottGu在其最新的博文中推荐了Simone Chiaretta的文章13 ASP.NET MVC extensibility points you have to know,该文章为我们简单介绍了ASP.NET MVC中的13个扩展点.Keyvan Nayyeri(与Simone合著了Beginning ASP.NET MVC 1.0一书)又陆续发表了一些文章,对这13个扩展点分别进行深入的讨论.我将在 以后的随笔中对这些文章逐一进行翻译,希望能对大家有所帮助. ASP.NET MVC设计

ASP.NET MVC中实现多个按钮提交的几种方法

有时候会遇到这种情况:在一个表单上需要多个按钮来完成不同的功能,比如一个简单的审批功能. 如果是用webform那不需要讨论,但asp.net mvc中一个表单只能提交到一个Action处理,相对比较麻烦点. 方法一:使用客户端脚本 比如我们在View中这样写: 代码<inputtype="submit"value="审核通过"onclick='this.form.action="<%=Url.Action("Action1"

在 ASP.NET MVC 中使用 HTTPS

某些安全性较高的网页,如网上支付或用户登陆页面,可能会使用到https(SSL/TLS)来提高安全性.本文介绍了如何在ASP.NET MVC中强制某action使用https和如何进行向https页面的跳转. 我们先实现强制一个action使用https.这里写了一个RequireHttpsAttribute,它的作用是将非https连接转换成https连接,这样所有使用了RequireHttps这个filter的controller都会强制使用https连接.   1 using System

ASP.NET MVC中使用ASP.NET AJAX异步访问WebService

使用过ASP.NET AJAX的朋友都知道,怎么通过ASP.NET AJAX在客户端访问 WebService,其实在ASP.NET MVC中使用ASP.NET AJAX异步访问WebService 也没 什么大的差别. 在ASP.NET应用程序里使用ASP.NET AJAX访问WebService通常都是通过 ScriptMananger引入WebService生成客户端代理的方法,同时也可以使用 Microsoft Ajax Library来完成.本文将介绍在ASP.NET MVC中使用AS

ASP.NET MVC中Area的另一种用法

[摘要]本文只是为一行代码而分享 context.MapRoute("API", "api/{controller}/{action}", new { }, newstring[] { "CNBlogs.UcHome.Web.Controllers.Api" }); 我们在ASP.NET MVC中使用Area时通常这么干: 在Web项目中创建Areas文件夹,在其中创建对应的Area文件夹,在其下创建Controllers文件夹.然后在Area文

Asp.Net MVC中如何使用DropDownListFor

在Asp.Net MVC中可以用DropDownListFor的方式来让用户选择已定列表中的一个数值.用法不复杂,这里简单做一个记录. 首先我们要定义一个 Model,用户在 DropDownList 中选择指定的值赋给属性ReadyTimeHour public class EricSunModel { public string ReadyTimeHour { get; set; } } Model定义完毕之后,接下来处理Controller的逻辑 [注:这里用了ViewData来记录Dro

在Asp.Net MVC中实现CompareValues标签对Model中的属性进行验证

在Asp.Net MVC中可以用继承ValidationAttribute的方式,自定制实现Model两个中两个属性值的比较验证 具体应用场景为:要对两个属性值的大小进行验证 代码如下所示: /// <summary> /// Specifies that the field must compare favourably with the named field, if objects to check are not of the same type /// false will be r

ASP.NET MVC中的视图生成简介

在 ASP.NET MVC 中,我们将前端的呈现划分为三个独立的部分来实现,Controller 用来控制用户的操作,View 用来控制呈现的内容,Model 用来表示处理的数据. 从控制器到视图 通常,在 Controller 中,我们定义多个 Action ,每个 Action 的返回类型一般是 ActionResult,在 Action 处理的最后,我们返回对于视图的调用. public ActionResult Index() {    return this.View(); } 默认情