Raise an event of a class from a different class in C#

后端 未结 12 914
庸人自扰
庸人自扰 2020-11-28 07:44

I have a class, EventContainer.cs, which contains an event, say:

public event EventHandler AfterSearch;

I have another class, EventRaiser.c

12条回答
  •  悲&欢浪女
    2020-11-28 07:59

    It looks like you're using the Delegate pattern. In this case, the AfterSearch event should be defined on the EventRaiser class, and the EventContainer class should consume the event:

    In EventRaiser.cs

    public event EventHandler BeforeSearch;
    public event EventHandler AfterSearch;
    
    public void ExecuteSearch(...)
    {
        if (this.BeforeSearch != null)
          this.BeforeSearch();
    
        // Do search
    
        if (this.AfterSearch != null)
          this.AfterSearch();
    }
    

    In EventContainer.cs

    public EventContainer(...)
    {
        EventRaiser er = new EventRaiser();
    
        er.AfterSearch += this.OnAfterSearch;
    }
    
    public void OnAfterSearch()
    {
       // Handle AfterSearch event
    }
    

提交回复
热议问题