我有一个普通的普通类,例如:
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
}
答案 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)
怎么样: INotifyPropertyChanged接口
http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx
答案 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
}
}