当前位置: 首页 > news >正文

enterprise library 5 unity使用方法

通过使用unity容器,从配置文件里读取配置,解析出一个接口的实现,或在程序里指定一个接口的实现:

1、先建一个项目,名字为ClassLibrary,里面有ILogger.cs Logger.cs

Logger.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Practices.Unity;
using System.Text;

namespace ClassLibrary
{
  public class TextLogger : ILogger
  {
    public void Log(string str)
    {
      Console.WriteLine(str + ":TextLogger.Log()");
    }
  }

  public class DBLogger : ILogger
  {
    public void Log(string str)
    {
      Console.WriteLine(str + ":DBLogger.Log()");
    }
  }

}

 

ILogger.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ClassLibrary
{
  public interface ILogger
  {
    void Log(string str);
  }
}

 

Main.cs:

public static void Main()
{

  IUnityContainer c = new UnityContainer();
  c.LoadConfiguration();
  c.Resolve<ILogger>().Log("abbbbb");//从默认注册里取,见配置文件的Container>>Register节点
  c.Resolve<ILogger>("special").Log("abbbbb");//从name为special的注册里取,见配置文件的Container>>Register节点
  return;

  using (IUnityContainer container = new UnityContainer())
  {

    container.RegisterType<ILogger, TextLogger>();
    container.RegisterType<ILogger, TextLogger>("text");
    container.RegisterType<ILogger, DBLogger>("db");


    container.Resolve<ILogger>().Log("abc");
    IEnumerable<ILogger> i = container.ResolveAll<ILogger>();

    foreach (ILogger l in i) {
      l.Log("lllll");
    }

  }

}

 

配置文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>
  </configSections>

  <unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
    <alias alias="ILogger" type="ClassLibrary.ILogger, ClassLibrary" /><!--这一行可选,可不要-->
    <namespace name="ClassLibrary" />
    <assembly name="ClassLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />

    <container>
      <register type="ILogger" mapTo="DBLogger" />
      <register type="ILogger" name="special" mapTo="TextLogger" />
    </container>

  </unity>
</configuration>

转载于:https://www.cnblogs.com/yuanxiaoping_21cn_com/archive/2012/12/11/2813845.html

相关文章:

  • 设计的MOS管三极管简单开关电路驱动能力不够2
  • 大数据||HDFS||NameNode启动过程详解
  • [短彩信]C#短彩信模块开发设计(2)——配置
  • Java里面CompletableFuture详解
  • 10个最受欢迎的Java类
  • 国内 CDN 产品发展历史和现状整理
  • [译] 用 Java 创造你的第一个区块链-第一部分
  • vi
  • 文件上传下载
  • Flex与后台交互 鼠标忙时状态
  • 18.Azure备份(MARS)代理(下)
  • 5个能够有效帮助你快速创建超棒CSS3动画效果的类库
  • 用js实现页面跳转的几种方式
  • Bzoj1758: [Wc2010]重建计划
  • 图像编码介绍mark
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 345-反转字符串中的元音字母
  • Javascript 原型链
  • Java多线程(4):使用线程池执行定时任务
  • JS题目及答案整理
  • js写一个简单的选项卡
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • Otto开发初探——微服务依赖管理新利器
  • Vue UI框架库开发介绍
  • WePY 在小程序性能调优上做出的探究
  • 关于使用markdown的方法(引自CSDN教程)
  • 码农张的Bug人生 - 初来乍到
  • 前端路由实现-history
  • 时间复杂度与空间复杂度分析
  • 小程序01:wepy框架整合iview webapp UI
  • 学习Vue.js的五个小例子
  • 《码出高效》学习笔记与书中错误记录
  • NLPIR智能语义技术让大数据挖掘更简单
  • #define
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #图像处理
  • (52)只出现一次的数字III
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (算法设计与分析)第一章算法概述-习题
  • (转载)(官方)UE4--图像编程----着色器开发
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .NET基础篇——反射的奥妙
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • @GlobalLock注解作用与原理解析
  • [].slice.call()将类数组转化为真正的数组
  • [145] 二叉树的后序遍历 js
  • [2021]Zookeeper getAcl命令未授权访问漏洞概述与解决
  • [AR Foundation] 人脸检测的流程
  • [BZOJ1053][HAOI2007]反素数ant
  • [codevs1288] 埃及分数