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);
            }
        }
相关文章
|
9月前
|
C# 图形学 开发者
【Unity3D实例-功能-镜头】俯视角
本文介绍了Unity中常用的俯视角镜头实现方法,涵盖模型添加、角色Tag设置、摄像机脚本编写及测试运行,帮助开发者快速掌握俯视角在策略与模拟类游戏中的应用技巧。
528 0
|
9月前
|
人工智能 定位技术 C#
【Unity3D实例-功能-移动】通过鼠标点击进行角色移动
本文介绍了如何在Unity中实现鼠标点击控制角色移动的功能。通过安装导航网格、设置地图与角色、烘焙路径及编写脚本,带领读者一步步构建角色自动寻路系统,增强游戏交互体验。
438 0
|
10月前
|
C# 图形学 开发者
【Unity3D实例-功能-移动】复杂移动(Blend Tree方式)
本文介绍了使用Unity中Blend Tree实现角色移动控制的完整教程,涵盖动画器设置、Blend Tree创建、CharacterController组件添加及代码控制,帮助开发者实现流畅自然的角色动画效果。
311 0
|
10月前
|
图形学 开发者
【Unity3D实例-功能-移动】角色移动-通过WSAD(CharacterController方式)
本文介绍了如何在Unity中使用CharacterController组件实现角色灵活移动。内容包括模型准备、动画处理、添加组件、编写移动脚本及测试运行,帮助开发者快速掌握角色控制技巧,打造流畅的游戏体验。
474 0
|
10月前
|
C# 图形学 开发者
【Unity3D实例-功能-移动】角色移动-通过WSAD(Rigidbody方式)
本文介绍了如何在Unity中使用Rigidbody组件实现角色自由移动,包括模型准备、组件添加、脚本编写与测试运行,帮助开发者快速掌握基础角色控制技巧。
393 0
|
10月前
|
C# 图形学
【Unity3D实例-功能-移动】角色移动-通过WSAD(Transform方式)
本文介绍了如何在Unity中实现角色移动功能,使用Transform组件控制角色基础移动,并详细讲解了模型导入、动画设置、动画控制器配置及移动脚本编写等内容,适合Unity初学者学习角色控制的基础知识。
380 0
|
图形学 容器
IOC容器Unity三种注入总结
IOC容器Unity三种注入总结
|
图形学
【unity小技巧】unity读excel配置表操作,excel转txt文本,并读取txt文本内容,实例说明
【unity小技巧】unity读excel配置表操作,excel转txt文本,并读取txt文本内容,实例说明
1105 0
|
人工智能 图形学
Unity——游戏AI实例
Unity——游戏AI实例
365 0
|
图形学
Unity基础-Vector3.Lerp的使用给一个简单的实例
Unity基础-Vector3.Lerp的使用给一个简单的实例
349 0

热门文章

最新文章