diff --git a/Product.cs b/Product.cs index f68c8c9..6e767f4 100644 --- a/Product.cs +++ b/Product.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace Events { @@ -32,11 +32,16 @@ public string Name get { return name; } set { - name = value; + var args = new NameChangeEventArgs(name, value); + name = value; /* * TODO #4 Инициировать уведомление об * изменении наименования */ + if (NameChangeEvent != null) + { + NameChangeEvent(this, args); + } } } /// @@ -47,11 +52,17 @@ public decimal Price get { return price; } set { + var args = new PriceChangeEventArgs(price, value); price = value; /* * TODO #5 Инициировать уведомление об * изменении стоимости */ + if (PriceChangeEvent != null) + { + PriceChangeEvent(this, args); + } + } } @@ -63,6 +74,39 @@ public decimal Price * TODO #3 Добавить определение событий */ + // объявляем делегат + public delegate void ProductHandler(object sender, EventArgs e); + // событие, возникающие при изменении наименования + public event EventHandler NameChangeEvent; + // событие, возникающие при изменении стоимости + public event EventHandler PriceChangeEvent; + + class NameChangeEventArgs : EventArgs + { + public string Old { get; } + public string Current { get; } + + public NameChangeEventArgs( string old, string current) + { + Old = old; + Current = current; + } + } + + class PriceChangeEventArgs : EventArgs + { + public decimal Old { get; } + public decimal Current { get; } + + public PriceChangeEventArgs(decimal old, decimal current) + { + Old = old; + Current = current; + } + } + + + #endregion public Product(string name, decimal price)