如何将事件处理程序提取到另一个文件,并且仍然可以访问sender和args

本文关键字:访问 args sender 事件处理 程序 提取 文件 另一个 | 更新日期: 2023-09-27 18:23:53

我在实体框架的SavingChanges事件中附加了一个事件处理程序。现在,我发现我需要在解决方案的其他地方附加相同的事件处理程序。这两种情况(如果我们深入研究,可能会更多)都需要相同的代码,因此提取到一个方法并从多个事件处理程序中调用相同的方法是有意义的。

方法体包括对发送方对象和事件参数的引用。如何将这些参数传递给方法,即使它在自己的类中?

如何将事件处理程序提取到另一个文件,并且仍然可以访问sender和args

sender和事件参数应该是方法签名的一部分,并且在触发事件时将传递给您正在编写的方法。因此,变量被定义为事件处理程序的参数,这些变量的值将由事件触发器发送。

// I don't know what the proper signature is for a SavingChanges event handler
public class EventHandlers
{
    public static void SavingChangesHandler(object sender, EventArgs args)
    {
      // do something with sender and args here
    }
}

// in your other code
SomeObject.SavingChanges += EventHandlers.SavingChangesHandler;