SPRING.NET 1.3.2 学习15--事件注入

这部分转自博客园"刘冬"的博客

http://www.cnblogs.com/GoodHelper/

觉得写的很容易理解,就转过来了


  在Spring.NET的IoC框架中,除了提供方法注入以外,还提供事件的注入。通过事件的注入,可以使架构体系的耦合降到最低。(参考 clingingboy的 Spring.NET学习笔记(3)-注册事件注入)

  在listener节点处配置eventmethod属性指明事件名和绑定的方法,并增加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>




 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值