Unity于Xml配制文件使用泛型

发布时间:2018-09-25  栏目:法律  评论:0 Comments

        连交付(英语:Continuous delivery,缩写为
CD),是一律种软件工程手法,让软件出品之面世过程在一个短周期内成功,以保险软件可以安静、持续的维持以天天可以释出的景。它的对象在受软件之建置、测试和释放出易得重复快和更累。这种措施可以减少软件开发的老本以及日,减少风险。

            Unity
在本路蒙,已经得到大规模运用。今天我们来拘禁咋样以XML配制文件配制泛型。如下我们这样的一个门类:

        在今互联网企业还要不断交付,让我们开:

   1:      public interface IRepository<T> 

   2:      {

   3:          IUnitOfWork UnitOfWork { get; set; }

   4:          IQueryable<T> All();

   5:          IQueryable<T> Find(Expression<Func<T, bool>> expression);

   6:          void Attach(T entity);

   7:          void Add(T entity);

   8:          void Delete(T entity);

   9:          void Save();

  10:      }

图片 1

            这是一个Repository模式,假设发生以下的贯彻:

图片 2

   1:      public class EFRepository<T> : IRepository<T> where T : class

   2:      {

   3:          public IUnitOfWork UnitOfWork { get; set; }

   4:          private IObjectSet<T> _objectset;

   5:          private IObjectSet<T> ObjectSet

   6:          {

   7:              get

   8:              {

   9:                  if (_objectset == null)

  10:                  {

  11:                      _objectset = UnitOfWork.Context.CreateObjectSet<T>();

  12:                  }

  13:                  return _objectset;

  14:              }

  15:          }

  16:   

  17:          public virtual IQueryable<T> All()

  18:          {

  19:              return ObjectSet.AsQueryable();

  20:          }

  21:   

  22:          public IQueryable<T> Find(Expression<Func<T, bool>> expression)

  23:          {

  24:              return ObjectSet.Where(expression).AsQueryable();

  25:          }

  26:   

  27:          public void Add(T entity)

  28:          {

  29:              ObjectSet.AddObject(entity);

  30:          }

  31:          

  32:          public void Attach(T entity)

  33:          {

  34:              ObjectSet.Attach(entity);

  35:          }

  36:   

  37:          public void Delete(T entity)

  38:          {

  39:              ObjectSet.DeleteObject(entity);

  40:          }

  41:   

  42:          public void Save()

  43:          {

  44:              UnitOfWork.Save();

  45:          }

  46:      }

图片 3
图片 4

在代码中登记是这样的:

图片 5
图片 6
图片 7
图片 8
图片 9

   1:             container.RegisterType<IUnitOfWork, EFUnitOfWork>();

   2:              container.RegisterType<IRepository<Product>, EFRepository<Product>>();

图片 10

哼之,现在咱们由配制文件读取:

图片 11
图片 12
图片 13
图片 14
图片 15

   1:         private static IUnityContainer container;

   2:   

   3:         static ObjectFactory()

   4:         {

   5:              container = new UnityContainer();

   6:   

   7:              //container.RegisterType<IUnitOfWork, EFUnitOfWork>();

   8:              //container.RegisterType<IRepository<Product>, EFRepository<Product>>();

   9:   

  10:              string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "EntLib.config.xml");

  11:              var map = new ExeConfigurationFileMap { ExeConfigFilename = path };

  12:   

  13:              System.Configuration.Configuration config

  14:                  = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);

  15:              UnityConfigurationSection section

  16:                  = (UnityConfigurationSection)config.GetSection("unity");

  17:              section.Containers["DefContainer"].Configure(container);

  18:          }

  19:           

  20:          public static T GetInstance<T>()

  21:          {

  22:              return container.Resolve<T>();

  23:          }

DevOps的界定重新常见,它坐文化变化也主导,特别是软件提交过程所波及的大半只集团中的搭档(开发、运维、QA、管理部门齐),并且用软件提交的历程自动化。另壹方面,持续交付是壹种自动化交付的手段,关注点在于将不同之进程集中起来,并且再快、更累地推行这些经过。因此,DevOps可以是不停交付的壹个产物,持续交付直接汇可DevOps。图片 16

要害的XML配制在这儿:

DevOps的限更宽广,它以知识转变也着力,特别是软件提交过程所涉及的大多单团体里的协作(开发、运维、QA、管理单位等),并且将软件提交的经过自动化。另壹方面,持续交付是壹种自动化交付的一手,关注点在于以不同的过程集中起来,并且再快、更频繁地实践这些经过。因此,DevOps可以是延绵不断交付的壹个产物,持续交付直接汇可DevOps。

   1:  <configuration>

   2:    <configSections>

   3:      <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration, Version=1.2.0.0,Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

   4:    </configSections>

   5:    <unity>

   6:      <typeAliases>

   7:        <typeAlias alias="singleton" type="Microsoft.Practices.Unity.ContainerControlledLifetimeManager, Microsoft.Practices.Unity" />

   8:        <typeAlias alias="transparentProxy" type="Microsoft.Practices.Unity.InterceptionExtension.TransparentProxyInterceptor, Microsoft.Practices.Unity.Interception" />

   9:        <typeAlias alias="typeMatchingRule" type="Microsoft.Practices.Unity.InterceptionExtension.TypeMatchingRule, Microsoft.Practices.Unity.Interception" />

  10:        <typeAlias alias="interception" type="Microsoft.Practices.Unity.InterceptionExtension.Interception, Microsoft.Practices.Unity.Interception" />

  11:        <typeAlias alias="IRepository`1" type="TestEF4.IRepository`1,  TestEF4" />

  12:        <typeAlias alias="IUnitofwork" type="TestEF4.IUnitOfWork,  TestEF4" />

  13:      </typeAliases>

  14:      <containers>

  15:        <container name="DefContainer">

  16:          <types>

  17:            <type type="IUnitofwork"  mapTo="TestEF4.EFUnitOfWork, TestEF4">

  18:              <lifetime type="singleton" />

  19:            </type>

  20:            <type type="IRepository`1"  mapTo="TestEF4.EFRepository`1, TestEF4">

  21:              <lifetime type="singleton" />

  22:            </type>

  23:          </types>

  24:        </container>

  25:      </containers>

  26:    </unity>

  27:  </configuration>

图片 17
图片 18

专注加粗的字体就是咱泛型。让咱们来测试一下:

今天优先到这儿,希望对而在系统架构设计与评估,团队管理, 项目管理,
产品管理,团队建设 有参照作用 , 您可能感兴趣的篇章:
Docker同CI持续集成/CD
互联网电商购物车架构演变案例
互联网业务场景下消息队列架构
互联网快速研发集团管理形成之一
信息网架构设计演进
互联网电商搜索架构演化之一
供销社信息化暨软件工程的迷思
信用社项目化管理介绍
软件项目成功的要素
人际沟通风格介绍一
精益IT组织与分享式领导
学习型组织及企业
企业创新文化和等级观念
团目标与个人目标
初创公司人才招聘和管理
浓眉大眼公司环境及信用社文化
号文化、团队文化与文化共享
强功能的团体建设
种管理挂钩计划
构建高速的研发和自动化运维
某大型电商云平台实践
互联网数据库架构设计思路
IT基础架构规划方案一(网络体系规划)
餐饮行业解决方案的客户分析流程
餐饮行业解决方案的贾战略制定和实践流程
餐饮行业解决方案的务设计流程
供应链需求调研CheckList
企业应用之性质实时度量系统演化

   1:          [Test]

   2:          public void TestUnityGenericTypeConfig()

   3:          {

   4:              var productRepository = RepositoryHelper.GetProductRepository();

   5:              var totalentities = productRepository.All();

   6:   

   7:              Assert.IsNotNull(productRepository);

   8:              Assert.IsInstanceOf<ProductRepository>(productRepository);

   9:              Assert.IsInstanceOf<EFRepository<Product>>(productRepository.Repository);

  10:              Assert.IsInstanceOf<EFUnitOfWork>(productRepository.Repository.UnitOfWork);

  11:          }

一旦发生想念了解再多软件设计与架构, 系统IT,企业信息化, 团队保管
资讯,请关注自我之微信订阅号:

一切OK了,这就算实用使用配制文件落实DI解析泛型。希望对而支付有帮。

图片 19

作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意要保留这个段子声明,且当篇章页面明显位置为有原文连接,否则保留追究法律责任的权。
该文章也还要发布以自家之独门博客中-Petter Liu
Blog。

作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
正文版权归作者和博客园共有,欢迎转载,但未经作者同意要保留这个段子声明,且当文章页面明显位置让闹原文连接,否则保留追究法律责任的权利。
该篇也罢还要公布于自我的独立博客中-Petter Liu
Blog。

留下评论