为了检验能否应用写了一个小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); } }