diff --git a/Product.cs b/Product.cs index f68c8c9..8de803f 100644 --- a/Product.cs +++ b/Product.cs @@ -20,7 +20,7 @@ class Product /// private decimal price; - #endregion + #endregion #region Properties @@ -32,7 +32,13 @@ public string Name get { return name; } set { + var args = new ProductNameChangedEventArgs(name, value); name = value; + if (NameChanged != null) + { + NameChanged(this, args); + } + /* * TODO #4 Инициировать уведомление об * изменении наименования @@ -47,7 +53,12 @@ public decimal Price get { return price; } set { + var args = new ProductPriceChangedEventArgs(price, value); price = value; + if (PriceChanged != null) + { + PriceChanged(this, args); + } /* * TODO #5 Инициировать уведомление об * изменении стоимости @@ -55,15 +66,19 @@ public decimal Price } } - #endregion + #endregion #region Events + public event EventHandler NameChanged; + + public event EventHandler PriceChanged; + /* * TODO #3 Добавить определение событий */ - #endregion + #endregion public Product(string name, decimal price) { diff --git a/ProductEventArgs.cs b/ProductEventArgs.cs index a79a6d6..57801b7 100644 --- a/ProductEventArgs.cs +++ b/ProductEventArgs.cs @@ -1,4 +1,5 @@ -namespace Events +using System; +namespace Events { /// /// Класс, который служит для передачи аргументов @@ -8,11 +9,41 @@ /* * TODO #1 Закончить определение класса ProductEventArgs */ - class ProductEventArgs + class ProductEventArgs : EventArgs { + public string Name { get; } + public decimal Price { get; } + + public ProductEventArgs(string name, decimal price) + { + Name = name; + Price = price; + } /* * TODO #2 Добавить определение необходимых компонент * класса ProductEventArgs */ } + + class ProductNameChangedEventArgs : EventArgs + { + public string NewName { get; } + public string OldName { get; } + public ProductNameChangedEventArgs(string oldName, string newName) + { + OldName = oldName; + NewName = newName; + } + } + + class ProductPriceChangedEventArgs : EventArgs + { + public decimal NewPrice { get; } + public decimal OldPrice { get; } + public ProductPriceChangedEventArgs(decimal oldPrice, decimal newPrice) + { + OldPrice = oldPrice; + NewPrice = newPrice; + } + } } diff --git a/Program.cs b/Program.cs index b9247f7..da210a6 100644 --- a/Program.cs +++ b/Program.cs @@ -1,4 +1,5 @@ -namespace Events +using System; +namespace Events { class Program { @@ -18,7 +19,10 @@ internal Product Product static void Main(string[] args) { Product product = new Product("Some product name", 0); - + product.NameChanged += OnProductNameChanged; + product.PriceChanged += OnProductPriceChanged; + product.Name = "New IPhone"; + product.Price = 10000999; /* * TODO #6 Назначить обработчики событий в текущем контексте */ @@ -29,6 +33,17 @@ static void Main(string[] args) */ } + + private static void OnProductNameChanged(object sender, ProductNameChangedEventArgs e) + { + Console.WriteLine("Было -" + e.OldName + ". Стало -" + e.NewName); + } + + private static void OnProductPriceChanged(object sender, ProductPriceChangedEventArgs e) + { + + Console.WriteLine("Was - " + e.OldPrice + ". And now - " + e.NewPrice); + } /* * TODO #8 Добавить определение обработчиков событий */