Unity构造器注入+配置文件小实例

简介: Unity构造器注入+配置文件小实例

  为了检验能否应用写了一个小Demo,使用的是构造器注入加配置文件注册的形式,便于修改。只用到了B层和U层,目的是检验文本是否为空,代码如下:

namespace IBLL
{
    /// <summary>
    /// 验证文本信息是否为空,没有返回值
    /// </summary>
    /// <param name="values">要验证的内容</param>
    public interface ICheckText
    {
        void Check(params object[] values);
    }
}
using IBLL;
using System;
namespace BLL
{
    public class CheckText: ICheckText
    {
        /// <summary>
        /// 验证文本框内容是否为空
        /// </summary>
        /// <param name="values">要验证的文本</param>
        public void Check(params object[] values)
        {
            foreach (object text in values)  //遍历values的值,判断是否为空
            {
                if (text.ToString() == "")  //如果文本为空
                {
                    throw new Exception("信息有空,请将信息填写完整。");  //抛出提示信息
                }
            }
        }
    }
}

  Command项目里需要安装Unity和Unity.Configuration这两个程序包,右击项目选择“管理NuGet程序包”进行安装。

using Microsoft.Practices.Unity.Configuration;
using System.Configuration;
using Unity;
namespace Command
{
    /// <summary>
    /// Unity容器帮助
    /// </summary>
    public class UnityContainerHelp
    {
        //创建IUnityContainer接口为类型的私有对象container
        private IUnityContainer container;
        /// <summary>
        /// 重写构造函数
        /// </summary>
        public UnityContainerHelp()
        {
            //实例化UnityContainer对象并给container,创建容器
            container = new UnityContainer();
            //Unity配置节 section=(Unity配置节)配置管理器 . GetSection("unity"),在配置文件中注册
            UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
            //container . 加载配置(section, "CheckText")
            container.LoadConfiguration(section, "CheckText");
        }
        /// <summary>
        /// 获得服务
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public T GetServer<T>()
        {
            //返回调用者,输送到T
            return container.Resolve<T>();
        }
    }
}

  配置文件内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <!-- 设置配置节 -->
  <configSections>
    <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,Unity.Configuration" /> 
  </configSections>
  <!-- 在容器中注册类型 -->
  <unity xmlns="http://schemas.microsoft.com/practces/2010/unity">
    <container name="CheckText">
      <register type="IBLL.ICheckText,IBLL" mapTo="BLL.CheckText,BLL"/>
    </container>
  </unity>
</configuration>
=

  U层需要添加以上三个项目的引用,代码如下:

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                //通过配置文件生成CheckText类的实例
                ICheckText checktext = new UnityContainerHelp().GetServer<ICheckText>();
                checktext.Check(textBox1.Text, textBox2.Text);
                MessageBox.Show("恭喜你,目前信息完整!");
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
相关文章
|
8月前
|
图形学
【unity小技巧】unity读excel配置表操作,excel转txt文本,并读取txt文本内容,实例说明
【unity小技巧】unity读excel配置表操作,excel转txt文本,并读取txt文本内容,实例说明
310 0
|
图形学 容器
IOC容器Unity三种注入总结
IOC容器Unity三种注入总结
|
人工智能 图形学
Unity——游戏AI实例
Unity——游戏AI实例
146 0
|
图形学
Unity基础-Vector3.Lerp的使用给一个简单的实例
Unity基础-Vector3.Lerp的使用给一个简单的实例
162 0
|
数据采集 算法 数据可视化
Unity实现camera数据注入RMP推送或轻量级RTSP服务模块
Unity实现camera数据注入RMP推送或轻量级RTSP服务模块
123 0
|
存储 C# 开发工具
C#编程的构成要素(结合unity做实例分析)
C#编程的构成要素(结合unity做实例分析)
C#编程的构成要素(结合unity做实例分析)
|
程序员 图形学 开发者
Unity游戏设计与实现:南梦宫一线程序员的开发实例(修订版)
加藤政树 (作者) 罗水东 (译者)  c# 游戏 unity   本书的作者是日本知名游戏公司万代南梦宫的资深开发人员,书中通过10个不同类型的游戏实例,展示了真正的游戏设计和实现过程。
|
图形学 容器
Unity TIP4: 带泛型参数的接口注入(interface,generic)
一:第一类需求 接口和类定义如下: public interface ISample {} public class Sample : ISample {} public class SomeClass2{} 要求用Unity注入。
789 0
|
图形学
Unity TIP3: 注入现有对象
上篇讲到了3种注入的方式,注入的对象都是由Unity为我们自动创建的。有时候我们需要注入已经存在的对象。 代码如下: //使用已有实例注入 ISomeBiz someBiz = container.
660 0