Это очень похоже на вопрос, но специфичный для списков.Выполнить метод каждый раз, когда список изменяется (не доступен)
How to trigger event when a variable's value is changed?
Каждый раз, когда мой список модифицирована Я хочу, чтобы запустить метод.
Я предположил, что использование свойства и метод в пределах 'set' будет правильным способом приблизиться к этому. Я начал что-то вроде этого
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) я заметил, что список можно изменить, используя «get» accessor.
В данном конкретном случае я не хочу, чтобы метод вызывался каждый раз, когда список читается чем-то, поскольку это может привести к увеличению производительности или вызвать переполнение стека. Так что это не вариант.
Буду очень признателен, если у кого есть советы или предложения по применению! Огромное спасибо.
Вместо этого вы можете использовать 'ObservableCollection' и зарегистрировать' CollectionChangedEvent'. Он будет срабатывать при любых манипуляциях с коллекцией. –