自定义事件arg有什么用?

时间:2012-04-26 02:18:06

标签: c# mvvm

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

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

    public object AddedObject { get; private set; }
}

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

3 个答案:

答案 0 :(得分:1)

AddedObject属性称为“自动属性”,这意味着C#编译器将生成一个私有变量来保存属性的值。 “get”是允许您读取属性值的机制。 “set”是允许您设置属性值的机制,尽管在这种情况下,因为集合为private,您无法设置该值。这转换为看起来大致如下的代码:

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

类本身(ObjectAddedEventArgs类)用于向事件处理程序提供其他数据(AddedObject值),可能会访问该数据并作为其中的一部分执行某些操作。这是对事件的回应。

答案 1 :(得分:0)

根据Microsoft's documentation

  

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

...

  

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

话虽这么说,该类的原始开发人员打算处理事件,同时使对象AddedObject可用于事件处理程序方法。请参阅上面的网站以获得一个很好的例子。

答案 2 :(得分:0)

当你宣布像这样的事件

时,这是件好事
  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
    }

你找到的弱点here