Spring.NET学习笔记11——自定义对象行为(基础篇)

Spring.NET通过几个专门的接口来控制容器中对象的行为。说到对象的行为无非就要提到对象的生命周期控制。类似在WinForm开发,Form生命周期中,Load方法为Form的载入方法和Dispose方法为Form的销毁方法。Spring.NET都能完美的实现这些需求。    

  一、生命周期接口

  在使用Spring.NET框架的时候通常遇到怎样初始化和销毁非托管资源(如数据库连接)的麻烦,下面的解决方案可能对您有所帮助。

  1.初始化行为

  继承Spring.Objects.Factory.IInitializingObject接口或者配置object节点的init-method属性,Spring.NET的IoC框架就会帮我们在该对象被实例后调用配置好的初始化方法。

  2.销毁行为

  继承System.IDisposable接口或者在object节点配置destroy-method属性,Spring.NET会帮我们在容器被销毁时调用它。

  实现代码:
Person

  1.     public class Person
  2.     {
  3.         public void Init()
  4.         {
  5.             Console.WriteLine("我长大了");
  6.         }
  7.         public void Destroy()
  8.         {
  9.             Console.WriteLine("我衰老了");
  10.         }
  11.     }
  12.       <!--生命周期接口-->
  13.       <object id="person" type="SpringNetProcessor.Person, SpringNetProcessor"
  14.               init-method="Init" destroy-method="Destroy" />
复制代码


  二、抽象对象定义和子对象定义


  对象定义可能会包含大量的信息,比如与容器相关的信息(即初始化方法、静态工厂方法名等)、构造器参数和属性值等。子对象定义是指从一个父对象定义中继承了配置数据的对象定义。子对象定义可以根据需要重写或添加某些配置的值。使用父对象和子对象的定义方式可能会节省大量的键入工作。实际上这是设计模式模板模式的一种形式。个人认为可以解决“子类”与“父类”之间的耦合。

  在object节点中设置parent属性来指明是继承关系,而并非正真意义的继承。

  实现代码:

  1.       <!--抽象对象定义和子对象定义-->
  2.       <object id="parent" type="SpringNetProcessor.Parent, SpringNetProcessor" abstract="true">
  3.         <property name="Name" value="parent"/>
  4.       </object>
  5.       <object id="child" type="SpringNetProcessor.Child, SpringNetProcessor" parent="parent"/>
  6.     public abstract class Parent
  7.     {
  8.         public string Name { get; set; }
  9.     }
  10.     public class Child
  11.     {
  12.         public string Name { get; set; }
  13.     }
复制代码

我们可以看出Child类并没有继承Parent类。

  输出效果:

posted @   似水流年-johnhuo  阅读(205)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2008-03-26 c# 二分查找
2008-03-26 几种字符串反转方法效率比较
2008-03-26 C#反转字符串效率最高的方法
点击右上角即可分享
微信分享提示