C #: Создание событий для класса на свойствах GET / SET - PullRequest
1 голос
/ 20 февраля 2010

Я ищу событие каждый раз, когда свойство в моем классе установлено в SET. Я хотел бы иметь возможность инициировать это же событие, когда установлено одно из моих свойств. У меня (около 12 из них)

* 1003 Т.е. *

public class MyClass
{
    private int _myHeight;
    private int _myWidth;

public int myHeight
{
    get { return myHeight; }
    set { myHeight = value;
         //This fires event! 
         }
}
public int myWidth
{
    get { return myWidth; }
    set { myWidth = value;
         //This will fire the same event! 
}

Я не новичок в самих событиях, а скорее новичок в создании событий. Я всегда использовал события «из коробки», которые используются в приложениях Windows. Есть идеи?

Ответы [ 2 ]

6 голосов
/ 20 февраля 2010

Вы должны реализовать INotifyPropertyChanged в вашем классе, чтобы достичь этого. Вот пример .

5 голосов
/ 20 февраля 2010

Использование INotifyPropertyChange является правильным подходом (потому что это широко используемый тип в .NET, так что любой может понять, каково ваше намерение). Однако, если вы просто хотите начать с простого кода, реализация вашего класса может выглядеть так:

public class MyClass 
{ 
  private int _myHeight; 
  public event EventHandler Changed;

  protected void OnChanged() {
    if (Changed != null) Changed(this, EventArgs.Empty);
  }

  public int myHeight 
  { 
    get { return myHeight; } 
    set {
      myHeight = value; 
      OnChanged();
    } 
  }
  // Repeat the same pattern for all other properties
} 

Это самый простой способ написания кода (который может быть полезен для обучения и плох для больших реальных приложений).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...