这部分转自博客园"刘冬"的博客
http://www.cnblogs.com/GoodHelper/
觉得写的很容易理解,就转过来了
在Spring.NET的IoC框架中,除了提供方法注入以外,还提供事件的注入。通过事件的注入,可以使架构体系的耦合降到最低。(参考 clingingboy的 Spring.NET学习笔记(3)-注册事件注入)
在listener节点处配置event和method属性指明事件名和绑定的方法,并增加ref节点设置object属性来指明调用哪个IoC容器对象。
实现代码:
<!--事件注入-->
<object id="men" type="SpringNet_MethodDi.Men, SpringNet_MethodDi">
<listener event="OpenTheDoor" method="OpenThisDoor">
<ref object="door"/>
</listener>
</object>
<object id="door" type="SpringNet_MethodDi.Door, SpringNet_MethodDi" />
//先定义一个委托
public delegate string OpenHandler(string arg);
public class Door
{
public event OpenHandler OpenTheDoor;
public void OnOpen(string arg)
{
//调用事件
if (OpenTheDoor != null)
{
Console.WriteLine(OpenTheDoor(arg));
}
}
}
public class Men
{
public string OpenThisDoor(string arg)
{
return "参数是:" + arg;
}
}
调用部分代码:
class Program
{
static void Main(string[] args)
{
IApplicationContext ctx = ContextRegistry.GetContext();
Console.WriteLine("事件注册");
Door door = (Door)ctx.GetObject("door");
door.OnOpen("Opening!");
Console.WriteLine();
Console.ReadLine();
}
}
---------------------------------------------------------------------------
除此外,还有更强大的用法,用正则表达式匹配一堆方法
<object id="eventListener" type="SpringdotNETEventsExample.TestEventHandler, SpringdotNETEventsExample">
<listener method="Handle.+">
<ref object="source"/>
</listener>
</object>
或
<object id="eventListener" type="SpringdotNETEventsExample.TestEventHandler, SpringdotNETEventsExample">
<!-- For the Click event, the HandleClick handler method will be invoked. -->
<listener method="Handle${event}">
<ref object="source"/>
</listener>
</object>
又或是匹配一堆事件,下面的配置可触发以"cl"开头的事件
<object id="eventListener" type="SpringdotNETEventsExample.TestEventHandler, SpringdotNETEventsExample">
<listener method="HandleEvent" event="Cl.+">
<ref object="source"/>
</listener>
</object>
本文详细介绍了Spring.NET框架中的事件注入功能,通过示例代码展示了如何利用XML配置实现事件监听和响应,包括基本的事件绑定及使用正则表达式进行高级配置。
6248

被折叠的 条评论
为什么被折叠?



