如何实现对象的更改通知

时间:2010-12-25 13:03:25

标签: c# event-handling onchange

我有一个普通的普通类,例如:

public class ObjectA
{
    public string val {get;set;}
    ...
}

在另一个类中,它包含ObjectA的一个实例,例如:

public class ObjectB
{
     private ObjectA objectA;
     ....
}

实例“objectA”将经常更改。 我的意思是在ObjectB中,一些方法将对象A的新实例和新实例分配给“objectA”

有没有办法实现触发器,只要实例objectA发生变化,就可以让我做一些事情,例如:

objectA += OnChanged_ObjectA   

protected void OnOnChanged_ObjectA()
{
    // do something
}

3 个答案:

答案 0 :(得分:3)

您可以在ObjectA上创建一个更改event,您可以针对要跟踪的任何更改触发该更改。这将允许您在任何其他对象上订阅此事件,包括ObjectB

Object1.cs

// Delegate type for the event handler
public delegate void MyEventHandler();

// Declare the event.
public event MyEventHandler MyEvent;

// In the properties or any place you what to notify of change:
if (MyEvent != null)
      MyEvent();

Object2.cs中,您可以订阅:

objectA.MyEvent += OnChanged_ObjectA


protected void OnOnChanged_ObjectA()
{
    // Action changes
}

答案 1 :(得分:2)

答案 2 :(得分:0)

我最近遇到了这样的问题,但不幸的是,我没有找到任何其他解决方案,但是这个:

public ObjectB
{
    private ObjectA _objectA;
    public  ObjectA objectA
    {
        get 
        { 
            return _objectA; 
        }
        set
        {
            if (value != _objectA)
            {
                _objectA = value;
                RaiseObjectAChanged(/* sender, args */);
            }
        }
    }
    private RaiseObjectAChanged()
    {
        // raise event here
    }
    private OnObjectAChanged()
    {
        // event handler
    }
}