Unity在工作中的经验分享

控制反转,依赖注入不在此文做介绍,这里主要介绍一种实现方式Unity。由于在工作中会遇到客户需求相同,实现方式不同的问题;譬如客户的服务器会传来XML格式的数据或者Json格式的数据,譬如上传服务器文件是传到FTP服务器或是传到数据库中。这些当然也能用if else来判断,但是我们决定还是用接口来实现。接下来我就来介绍Unity自己写的一个Demo。

1.首先通过Nuget下载Unity。

2.新建一个序列化和反序列化的接口以及两个类,代码如下:

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

namespace UnityConsole
{
    public interface ISerialize //序列化和反序列化接口
    {
        string Serialize(object obj);   //序列化
        Object Deserialize(string str); //反序列化
        string Version();
    }

    public class XMLSerialize : ISerialize
    {
        public object Deserialize(string str)
        {
            throw new NotImplementedException();
        }

        public string Serialize(object obj)
        {
            throw new NotImplementedException();
        }

        public string Version()
        {
            return "XMLSerialize";
        }
    }

    public class JsonSerialize : ISerialize
    {
        object ISerialize.Deserialize(string str)
        {
            throw new NotImplementedException();
        }

        string ISerialize.Serialize(object obj)
        {
            throw new NotImplementedException();
        }

        string ISerialize.Version()
        {
            return "JsonSerialize";
        }
    }
}
3.配置App.config文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <!--must first-->
    <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Unity.Configuration" />
  </configSections>
  <unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
    <containers>
      <container>
        <register type="UnityConsole.ISerialize,UnityConsole" mapTo="UnityConsole.XMLSerialize,UnityConsole" />
      </container>
    </containers>
  </unity>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
</configuration>

注意事项:配置文件中container中的UnityConsole是命名空间,ISerialize是接口,mapTo中XMLSerialize是实现接口的类

XMLSerialize可替换成JsonSerialize

4.在项目中添加引用System.Configuration

5.在主程序中分别添加

using Microsoft.Practices.Unity.Configuration;

using System.Configuration;

using Unity;

6.主函数代码如下:

using (IUnityContainer container = new UnityContainer())
{
	UnityConfigurationSection config = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
	config.Configure(container);
	ISerialize serialize = container.Resolve<ISerialize>();
	Console.WriteLine("版本信息:{0}", serialize.Version());
}
Console.ReadLine();

注意事项:在这个小demo中主要是将配置文件和接口捆绑在了一起,具体调用哪个类通过配置文件就可以实现自由切换,不再需要主程序去做判断,这个事情从主程序移交给了Unity来实现。

猜你喜欢

转载自blog.csdn.net/A519736285/article/details/80791569