自定义事件参数有什么用

本文关键字:什么 参数 事件 自定义 | 更新日期: 2023-09-27 18:32:12

这是自定义事件参数的代码。我对它们的使用以及它们的作用感到困惑。我无法理解此属性public object AddedObject { get; private set; }代码在这里:

public class ObjectAddedEventArgs : EventArgs
{
    public ObjectAddedEventArgs(object addedObject)
    {
        AddedObject = addedObject;
    }
    public object AddedObject { get; private set; }
}

我无法理解添加对象的 get 和 set 属性的使用。请向我解释一下。

自定义事件参数有什么用

AddedObject 属性是所谓的"auto 属性",它仅表示 C# 编译器将生成一个私有变量来保存属性的值。"get"是允许您读取属性值的机制。"set"是允许您设置属性值的机制,尽管在这种情况下,由于集合是private因此您无法设置值。这转换为大致如下所示的代码:

private object _AddedObject;
public object AddedObject
{
   get { return this._AddedObject; }
   private set { this._AddedObject = value; }
}

类本身(ObjectAddedEventArgs类)用于向事件处理程序提供附加数据(AddedObject值),事件处理程序可能将访问该数据并对其进行处理,作为对事件的响应的一部分。

根据Microsoft的文档:

EventArgs 是包含事件数据的类的基类。

....

此类不包含任何事件数据;它由不包含的事件使用 引发事件时将状态信息传递给事件处理程序。如果 事件处理程序需要状态信息,应用程序必须 从此类派生一个类来保存数据。

话虽如此,该类的原始开发人员打算处理事件,同时使对象AddedObject可供事件处理程序方法使用。请参阅上面的网站,了解一个很好的例子。

当你

像这样声明你的事件时是件好事

  event EventHandler<ObjectAddedEventArgs> MyObjectAddedEvent;

您可以轻松地以弱方式订阅它

    myObjectInstance.MyObjectAddedEvent += new EventHandler<ObjectAddedEventArgs>(MyObjectAddedEventMethod).MakeWeak(eh => d.MyObjectAddedEvent -= eh);
    private void MyObjectAddedEventMethod(object sender, ObjectAddedEventArgseventargs)
    {
        //do something with the event args
    }

你在这里找到的弱东西。