创建空的ASP.NET MVC3项目,添加对Unity2.0动态库的引用。

方法1:在MSDN上下载Untity2.0,安装后,默认安装在C:\Program Files\Microsoft Unity Application Block 2.0下。

Microsoft.Practices.ServiceLocation.dll

Microsoft.Practices.Unity.Configuration.dll

Microsoft.Practices.Unity.dll

Microsoft.Practices.Unity.Interception.Configuration.dll

Microsoft.Practices.Unity.Interception.dll

方法2:使用Package Manager Console

工具—Library Package Manage—Package Manager Console,执行下面的命令:

要在上面新创建的ASP.NET MVC3项目中使用Unity依赖注入容器,需要在项目中添加一个类,它实现IDependencyResolver的接口,调用具体的Unity依赖注入容器。

代码如下:

using System.Web.Mvc;

using Microsoft.Practices.Unity;

 public class UnityDependencyResolver : IDependencyResolver
    {
        readonly IUnityContainer _container;
        public UnityDependencyResolver(IUnityContainer container)
        {
            this._container = container;
        }
        public object GetService(Type serviceType)
        {
            try
            {
                return _container.Resolve(serviceType);
            }
            catch
            {
                return null;
            }
        }
        public IEnumerable<object> GetServices(Type serviceType)
        {
            try
            {
                return _container.ResolveAll(serviceType);
            }
            catch
            {
                return new List<object>();
            }
        }
    }
在Global.asax.cs中,创建Unity依赖注入容器,在Application_Start 方法中,使用前面创建的UnityDependencyResolver 类注册Unity容器作为ASP.NET MVC的Service Locator。 
代码如下:
protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

RegisterGlobalFilters(GlobalFilters.Filters);
            RegisterRoutes(RouteTable.Routes);

var container = new UnityContainer();
            container.RegisterType<IMessages, Messages>();
            DependencyResolver.SetResolver(new UnityDependencyResolver(container));
        }

同时容器使用RegisterType 注册了类型,在本例中注册了类型IMessage以及具体实现Messages 
 
增加HomeController.cs,代码如下:
 代码如下:
public class HomeController : Controller
    {
                
        private readonly IMessages messages;
        public HomeController(IMessages messages)
        {
            this.messages = messages;
        }
        public ActionResult Index()
        {
            ViewBag.Message = messages.Welcome();
            return View();
        }

}

 
增加接口IMessges和具体实现类Messages,代码如下:
 代码如下:
public interface IMessages
{
    string Welcome();
}

public class Messages:IMessages
{
    public string Welcome()
    {
         return "欢迎在ASP.NET MVC3中使用Unity2.0"; 
    }
}

 

运行应用程序,Unity依赖注入容器会解析在HomeControler定义的依赖,Index页面显示"欢迎在ASP.NET MVC3中使用Unity2.0"

 
扩展(练习)
 
 
 
、-----------------------------------------------------------------------------------
 
 
 
2、-----------------------------------------------------------------------------------
 
 
 
 
3、-----------------------------------------------------------------------------------
 
 
 
 
 
 
 
 
 
 
 

源代码
 

 
改成使用配置文件的方式
 
1、-----------------------------------------------------------------------------------
 
 
2、-----------------------------------------------------------------------------------
 

Unity使用 转载的更多相关文章

  1. GJM:Unity导入百度地图SDK [转载]

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  2. GJM : 基于Actor模式的c#网络游戏服务器的实现和Unity游戏客户端的连接 [转载]

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  3. Unity协程(Coroutine)原理深入剖析(转载)

    记得去年6月份刚开始实习的时候,当时要我写网络层的结构,用到了协程,当时有点懵,完全不知道Unity协程的执行机制是怎么样的,只是知道函数的返回值是IEnumerator类型,函数中使用yield r ...

  4. unity客户端基本框架(转载)

    框架概述: 基础系统的框架搭建,其中包括: UI框架(NGUI + MVC) 消息管理(Advanced CSharp Messenger) 网络层框架(Socket + Protobuf ) 表格数 ...

  5. [转载][IoC容器Unity]第二回:Lifetime Managers生命周期

    1.引言 Unity的生命周期是注册的类型对象的生命周期,而Unity默认情况下会自动帮我们维护好这些对象的生命周期,我们也可以显示配置对象的生命周期,Unity将按照配置自动管理,非常方便,下面就介 ...

  6. (转载)Unity中解析ini配置文件----INIParser

    大家好,我是孙广东.   转载请注明出处:http://blog.csdn.net/u010019717 更全的内容请看我的游戏蛮牛地址:http://www.unitymanual.com/spac ...

  7. 【转载】Unity插件研究院之自动保存场景

    原文: http://wiki.unity3d.com/index.php?title=AutoSave  最近发现Unity老有自动崩溃的BUG. 每次崩溃的时候由于项目没有保存所以Hierarch ...

  8. 【转载】C#中可使用Unity容器实现属性注入

    简介 Unity :Unity是微软团队开发的一个轻量级,可扩展的依赖注入容器,为松散耦合应用程序提供了很好的解决方案,支持构造器注入,属性注入,方法注入. 控制反转:(Inversion of Co ...

  9. 【转载】Unity中矩阵的平移、旋转、缩放

    By:克森 简介 在这篇文章中,我们将会学到几个概念:平移矩阵.旋转矩阵.缩放矩阵.在学这几个基本概念的同时,我们会用到 Mesh(网格).数学运算.4x4矩阵的一些简单的操作.但由于克森也是新手,文 ...

随机推荐

  1. python2.7 爬虫初体验爬取新浪国内新闻_20161130

    python2.7 爬虫初学习 模块:BeautifulSoup requests 1.获取新浪国内新闻标题 2.获取新闻url 3.还没想好,想法是把第2步的url 获取到下载网页源代码 再去分析源 ...

  2. java.sql.SQLException: Operation not allowed after ResultSet closed

    转自:http://blog.csdn.net/hellobobantang/article/details/7173622 java.sql.SQLException: Operation not ...

  3. Vue cli项目开启Gzip

    目录 安装 compression-webpack-plugin 更改配置文件 服务器开启gzip功能 安装 compression-webpack-plugin 建议安装v1.1.11版本,最新版本 ...

  4. P1417烹调方案——背包问题中的排序

    题目:https://www.luogu.org/problemnew/show/P1417 与普通的01背包不同的一点是加入物品的顺序对结果有影响,这里可以考虑贪心的想法,把对全局影响最小的物品排在 ...

  5. [poj3107/poj2378]Godfather/Tree Cutting树形dp

    题意:求树的重心(删除该点后子树最大的最小) 解题关键:想树的结构,删去某个点后只剩下它的子树和原树-此树所形成的数,然后第一次dp求每个子树的节点个数,第二次dp求解答案即可. 此题一开始一直T,后 ...

  6. channelartlist中autoindex无效的解决方法

    {dede:channelartlist}中有使用autoindex无效的解决方法 在设计频道首页的时候,使用{dede:channelartlist}标签时,有很多朋友想做一些高级的开发,让重复的频 ...

  7. jsp九大内置对象与servlet中java对象

    jsp九大内置对象 request对象 :  getParameter(String name)获取表单提交的数据 getParamegerNames() 获取客户端提交的所有参数名 getAttri ...

  8. 解决ubuntu下filezilla登录ftp看不到中文目录和文件的问题 (转载)

    转自:http://blog.csdn.net/duguteng/article/details/7716283 打开filezilla 文件-站点管理器-新站点--字符集--使用自定义的字符集 ,填 ...

  9. MySQL8.0.16新特性:The Communication Protocol In Group Replication

    MGR优雅升级到MySQL8.0.16 传统的升级手段之一,5.7 MGR集群与8.0 MGR集群进行数据传输,程序切换新集群后测试是否正常. 如果不正常,要么将新集群的新增数据同步回旧集群,要么就舍 ...

  10. VS 远程部署程序

    第1步 https://www.cnblogs.com/hydor/p/6604053.html 第2步 http://www.cnblogs.com/potential/p/3751426.html ...