Unity学习笔记(2):注册映射

在上一篇文章中(认识Unity)中概要介绍了Unity和Ioc,本节主要介绍IoC中的注册映射,并使用代码和配置文件两种方式进行说明。

定义依赖注入相关信息

定义ILogger接口

    public interface ILogger
    {
        void Info(string message);

        void Warning(string message);

        void Error(string message);

        void Fatal(string message);

        void Exception(string message, Exception ex);
    }

定义ServcieLog,实现ILogger

 public class ServiceLog : ILogger
    {
        public void Error(string message)
        {
            Console.WriteLine("Service Error");
        }

        public void Exception(string message, Exception ex)
        {
            Console.WriteLine("Service Exception");
        }

        public void Fatal(string message)
        {
            Console.WriteLine("Service Fatal");
        }

        public void Info(string message)
        {
            Console.WriteLine("Service Info");
        }

        public void Warning(string message)
        {
            Console.WriteLine("Service Warning");
        }
    }

用代码注册类型映射(RegisterType)

RegisterType 包含多个支持泛型的重载,同时还包含了一一对应的非泛型重载。在此仅对其泛型重载进行阐述,非泛型重载与其对应。

RegisterType 注册类型映射可以是注册接口或基类所对应的类型,也可以直接注册类型。对于前者,在此仅给出接口或基类注册的一种,另一种直接替换即可。

RegisterType<TFrom, TTo>( )

 IUnityContainer container = new UnityContainer();

 container.RegisterType<ILogger, ServiceLog>();

RegisterType( Type TFrom,Type Tto)

IUnityContainer container = new UnityContainer();

container.RegisterType(typeof(ILogger), typeof(ServiceLog));

RegisterType<TFrom, TTo>(string name )

 IUnityContainer container = new UnityContainer();

 container.RegisterType<ILogger, ServiceLog>("log1");

RegisterType(Type TFrom,Type Tto,string name )

IUnityContainer container = new UnityContainer();

container.RegisterType(typeof(ILogger), typeof(ServiceLog),"log1");

更多重载方法,请自行查看源码。

通过配置文件映射(App.config)

配置section信息

<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" />

配置Unity信息

 <!--Begin Unity-->
  <unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
    <sectionExtension type="Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionConfigurationExtension, Microsoft.Practices.Unity.Interception.Configuration" />
    <!--容器-->
    <container>
      <register type="Unity.Aop.ILogger,Unity.Aop" mapTo="Unity.Aop.ServiceLog,Unity.Aop"></register>
    </container>
  </unity>
  <!--End Unity-->

通过加装配置文件信息,进行映射

var container = new UnityContainer();
UnityConfigurationSection configuration = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
时间: 2024-08-07 21:18:40

Unity学习笔记(2):注册映射的相关文章

Unity学习笔记之五为Prefab添加材质

本次笔记中,我们将利用unity来创建并使用材质,把材质添加到我们的Prefab中去. 这一系列教程以及素材均参考自人人素材翻译组出品的翻译教程<Unity游戏引擎的基础入门视频教程>,下载链接附在第二篇学习笔记中. 继续上次笔记中所记录的东西,在Project视图中,ImportedAssets-Meshes-Materials下我们可以看到一个没有纹理的材质球,这个材质是跟随我们的3d Max模型来的默认材质.因为这里我们要添加自己的材质,所以我们直接把这个材质球删除. 删除后,我们看到本

Java学习笔记-Hibernate关系映射

1. 初识Hibernate——关系映射 http://blog.csdn.net/laner0515/article/details/12905711 2. Hibernate 笔记8 关系映射1(多对一,一对多): http://www.cnblogs.com/zilong882008/archive/2011/11/05/2236559.html 3. Hibernate关联映射 http://www.cnblogs.com/huxi/archive/2009/12/15/1624988.

Unity学习笔记 - UI System(一)

转载请注明出处: EnigmaJJ http://www.cnblogs.com/twjcnblog/p/5850648.html 术语 Canvas是Unity的原生组件,Unity的渲染系统使用Canvas来提供绘制在游戏世界中的分层几何结构. Canvas的职责是将他所包含的几何体组合成batches,生成合适的渲染命令并将这些命令发送给Unity的图形系统.所有这些都是由C++代码完成的,被称为rebatch或batch build.当Canvas被标记为需要rebatch时,该Canv

unity学习笔记2

[转]自http://blog.csdn.net/tianyao9hen/article/details/53141141 对于新手学习unity碰撞讲的还是比较清楚的 OnTriggerEnter和OnCollisionEnter的触发条件是不同的,需要在设计的过程中加以关注. 触发的共同要求 碰撞的两个物体A,B,都要有碰撞体(collider),Box Collider,Sphere Collider,Capsule Collider等的任意一种 当A,B都添加刚体(Rigidbody)时

Unity学习笔记之四完善Prefab并添加First Person Controller

好久没学东西并用博客记录了,这个年过的很懒散,慢慢临近开学了,也要提前适应一下,写写东西,这样开学才能更好的进入状态呀-- 本次笔记中,我们将来雕琢一个更加完善的Prefab,并添加一个第一人称角色在场景中. 这一系列教程以及素材均参考自人人素材翻译组出品的翻译教程<Unity游戏引擎的基础入门视频教程>.下载地址附在第二篇笔记中. 上一篇教程我们创建了一个Prefab,在最后我利用四个Prefab通多顶点捕捉建立一个简易的隧道.这只是为了示意Prefab的便捷性,下面我们先把这个隧道删除到只

unity学习笔记一 受到伤害时的颜色变化

最近在跟着视频学做,很简单的demo 就是这个了,看过的人都知道,官方的.刚刚四级的我只能找点国内重制的看了 现在想做的效果就是受到伤害时会变红,让后慢慢平滑过渡到白色 在update方法中如下 void Update() { //鼠标左击模拟受到伤害 if( Input.GetMouseButtonDown(0)) { TakeDamage(30f); } //颜色变白 bodyRenderer.material.color =Color.Lerp(bodyRenderer.material.

Unity学习笔记 - Assets, Objects and Serialization

Assets和Objects Asset是存储在硬盘上的文件,保存在Unity项目的Assets文件夹内.比如:纹理贴图.材质和FBX都是Assets.一些Assets以Unity原生格式保存数据,例如材质.另一些Assets需要通过处理转换到原生格式,例如FBX. Object是一系列序列化数据,这些数据描述了具体的资源实例,这可以是Unity使用的任意类型的资源,例如mesh,sprite,audio clip或animation clip.所有的Objects都是UnityEngine.O

Unity 学习笔记(1):认识Unity

Unity是什么? Unity是patterns & practices团队开发的一个轻量级.可扩展的依赖注入容器,具有如下的特性: 它提供了创建(或者装配)对象实例的机制,而这些对象实例可能还包含了其它被依赖的对象实例. Unity允许将预先配置的对象注入到类中,实现了inversion of control (IoC)的功能.在Unity中,支持constructor injection(构造器注入), property setter injection(属性设值注入)以及method ca

unity学习笔记

monoDevelop乱码问题 这个问题坑了爹很久... unity自带的monodevelop的项目视图在我电脑(win7)上一直乱码,项目名称,项目结构树,以及文件名称全部显示成方框,今天调了下字体,把默认字体改成Consolas,无心插柳解决了这个问题... 见图片 关于Unity的一些概念和语法 最近一直在利用空闲时间看Unity的API,看的比较细但是实际操作的比较少,昨天有一整天的空闲时间,再加上有了一个还不错的想法,想要把它实现出来,因为用到的模型并不复杂,不需要用到建模软件,也不