Spring.Net学习笔记九(自定义对象行为)

 2023-09-05 阅读 29 评论 0

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

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

    public class Person
    {
        public void Init()
        {
            Console.WriteLine("我长大了");
        }
        public void Destroy()
        {
            Console.WriteLine("我衰老了");
        }
    }
 
      <!--生命周期接口-->
      <object id="person" type="SpringNetProcessor.Person, SpringNetProcessor" 
              init-method="Init" destroy-method="Destroy" />

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

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

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

  实现代码:

      <!--抽象对象定义和子对象定义-->
      <object id="parent" type="SpringNetProcessor.Parent, SpringNetProcessor" abstract="true">
        <property name="Name" value="parent"/>
      </object>
      <object id="child" type="SpringNetProcessor.Child, SpringNetProcessor" parent="parent"/>
 
    public abstract class Parent
    {
        public string Name { get; set; }
    }
    public class Child
    {
        public string Name { get; set; }
    }

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

  输出效果:

Spring.NET教程(十一)——自定义对象行为(基础篇) Level 200

转载于:https://www.cnblogs.com/wangyhua/p/IOC9.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/1406.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息