У меня есть объект, который передается интерфейсу, я хотел бы, чтобы конкретное место за этим интерфейсом выполняло какое-то действие каждый раз, когда один из членов объекта меняет состояние. Другими словами, у меня есть некоторый объект, который содержит целое число. Когда значение этого целого изменяется, я хотел бы, чтобы мой конкретный класс сидел за этим интерфейсом, чтобы выполнить какую-то работу.Есть ли способ выполнить действие каждый раз, когда объект изменяется?
Теперь я мог бы сделать что-то вроде этого, имея поток, который сидит в состоянии wait
и выполняет действие, как только pulse
будет выполнен с использованием monitor
. Но мне было интересно, имеет ли язык C# неотъемлемую поддержку такой вещи. Таким образом, когда элемент объекта изменяет состояние, действие будет выполнено автоматически. Я знаю, что это может быть невозможно, и если есть альтернативное решение, я бы хотел это услышать. Или, как нить, звучит как хорошая идея?
Где вы хотите "выполнить действие"? Это из объекта-потребителя (тот объект, который получает экземпляр?). Если да, можете ли вы просто реализовать INotifyPropertyChanged в своем интерфейсе и ответить соответствующим образом? – RQDQ
У вас есть две модели для работы с этим, нажимайте и тяните. В модели push, сам объект имеет поддержку для этого, обычно с помощью таких функций, как [INotifyPropertyChanged] (https://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged (v = vs. 110) .aspx). В модели на основе тяги вы должны постоянно контролировать объект и обнаруживать изменение снаружи. Просьба уточнить, поддерживает ли объект такие вещи или если вам нужно сидеть снаружи. Вы передаете объект через ссылку интерфейса или как ссылку на класс? –
Это очень полезная информация, как относительно новый .NET-программист, о котором я не знал. И @RQDQ я хотел бы «выполнить некоторые действия» внутри моего конкретного класса. – Snoopy