使用Unity Application block实现Ioc[原创]

  1. 代码-test.cs

    Code
    /*
    作者: mxy1028
    演示: 使用unity玩转IOC
    编译: csc /reference:Microsoft.Practices.Unity.Configuration.dll,Microsoft.Practices.Unity.dll TEst.cs
    依赖: Microsoft.Practices.Unity.dll和Microsoft.Practices.Unity.Configuration.dll
    */

    using System;
    using Microsoft.Practices.Unity;
    using Microsoft.Practices.Unity.Configuration;
    using System.Configuration;
    namespace KingRi.Test
    {
    public interface IDataBase
    {
    void Save();
    }
    public class SqlServer : IDataBase
    {
    public void Save()
    {
    Console.WriteLine(
    "保存到Sql Server!");
    }
    }
    public class Oracle : IDataBase
    {
    public void Save()
    {
    Console.WriteLine(
    "保存到Oracle");
    }
    }
    public class Factory
    {
    private IDataBase db;
    [Dependency]
    public IDataBase Db
    {
    get
    {
    return db;
    }
    set
    {
    this.db = value;
    }
    }
    public void Save()
    {
    db.Save();
    }
    public Factory()
    {

    }
    }
    public class Client
    {
    static void Main()
    {
    //1, 创建容器
    IUnityContainer container = new UnityContainer();

    //2, 获取配置信息
    UnityConfigurationSection section = ConfigurationManager.GetSection("unity") as UnityConfigurationSection;

    //3, 使用配置信息设置容器
    section.Containers.Default.Configure(container);

    //4, 获取对象
    Factory obj = container.Resolve<Factory>();

    obj.Save();
    Console.ReadLine();
    }
    }
    }
  2. 配置文件-test.exe.config

Code
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" />
</configSections>
<unity>
<containers>
<container>
<types>
<type type="KingRi.Test.IDataBase, test" mapTo="KingRi.Test.SqlServer, test" />
</types>
</container>
</containers>
</unity>
</configuration>

转载于:https://www.cnblogs.com/mxy1028/archive/2008/11/19/1336855.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值