• Spring.NET学习笔记(3)注册事件注入


    事件注入是.net版本的spring特有的,其实现方式是反向的,同时支持静态事件和实例事件

    <object id="source" type="Spring.Objects.TestObject, Spring.Core.Tests"/>
    
    <object id="staticEventListener" type="Spring.Objects.TestEventHandler, Spring.Core.Tests">
      <!-- wired up to a static event -->
      <listener event="StaticClick" method="HandleEvent">
          <ref type="Spring.Objects.TestObject, Spring.Core.Tests"/>
      </listener>
    </object>
    
    <object id="instanceEventListener" type="Spring.Objects.TestEventHandler, Spring.Core.Tests">
      <!-- wired up to an event exposed on an instance -->
      <listener event="Click" method="HandleEvent">
          <ref object="source"/>
      </listener>
    </object>
    internal class TestEventHandler 
        {
            public virtual void HandleEvent (object sender, EventArgs e) 
            {
                _eventWasHandled = true;
            }
    
            public virtual bool EventWasHandled 
            {
                get 
                {
                    return _eventWasHandled;
                }
            }
    
            protected bool _eventWasHandled;
        }
    public event EventHandler Click;
    
    public static event EventHandler StaticClick;
    
    /// <summary>
    /// Public method to programmatically raise the <event>Click</event> event
    /// while testing.
    /// </summary>
    public void OnClick()
    {
        if (Click != null)
        {
            Click(this, EventArgs.Empty);
        }
    }
    
    /// <summary>
    /// Public method to programmatically raise the <b>static</b>
    /// <event>Click</event> event while testing.
    /// </summary>
    public static void OnStaticClick()
    {
        if (TestObject.StaticClick != null)
        {
            TestObject.StaticClick(typeof (TestObject), EventArgs.Empty);
        }
    }

    Server测试

    [Test]
    public virtual void InstanceEventWiring()
    {
        DefaultListableObjectFactory factory = new DefaultListableObjectFactory();
        XmlObjectDefinitionReader reader = new XmlObjectDefinitionReader(factory);
        reader.LoadObjectDefinitions(new ReadOnlyXmlTestResource("event-wiring.xml", GetType()));
        ITestObject source = factory["source"] as ITestObject;
        TestEventHandler instanceHandler = factory["instanceEventListener"] as TestEventHandler;
        // raise the event... handlers should be notified at this point (obviously)
        source.OnClick();
        Assert.IsTrue(instanceHandler.EventWasHandled,
                      "The instance handler did not get notified when the instance event was raised (and was probably not wired up in the first place).");
    }
  • 相关阅读:
    《软件测试经验与教训》—读书笔记
    【转】性能测试工程师的素质
    【转】如何成为优秀的性能测试工程师
    性能测试学习之路
    FTP 、TCP/IP、HTTP、Cookies、Session
    Loadrunner工具介绍
    tesseract-ocr图像识别技术(一)
    MongoDB 自动分片 auto sharding
    mongodb 3.0下载安装、配置及mongodb最新特性、基本命令教程详细介绍
    java使用memcached2--集群部署
  • 原文地址:https://www.cnblogs.com/lauplay/p/2667489.html
Copyright © 2020-2023  润新知