这与列表中的问题非常相似。每次修改列表(未访问)时运行一个方法
How to trigger event when a variable's value is changed?
每当我的列表是修改我想运行的方法。
我假设使用一个属性,并将一个方法放在'设置'将是正确的方法来解决这个问题。我开始用这样的
public class Stuff
{
private List<Things> _myThings;
public List<Things> MyThings
{
get
{
return _myThings;
}
private set
{
_myThings= value;
runWhenListIsChanged();
}
}
}
然而,当我使用如下命令“RemoveAt移除”或“RemoveRange”
public class StuffChanger
{
Stuff.MyThings.RemoveAt(5);
}
,它直接进入了“得到”属性和列表变化。
我错误地推测它会使用set(因为它改变了列表),但事实并非如此。在调试时(使用Visual Studio中的'step into'工具),我注意到List可以通过使用'get'访问器进行修改。
在这种特殊情况下,我不希望每次读取某个列表时都会调用一个方法,因为这会导致性能下降或导致堆栈溢出。所以这不是一个选项。
如果有人有任何提示或代码建议,我将不胜感激!非常感谢。
您可以改用'ObservableCollection'来注册'CollectionChangedEvent'。它会触发对该集合的任何操作。 –