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类。

输出效果:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lzhdim

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值