From 09c6564d20f16f6d58be328896ae8e03afc6e7a9 Mon Sep 17 00:00:00 2001 From: Parol45 Date: Thu, 28 Feb 2019 01:26:57 +0300 Subject: [PATCH] Task done. --- Product.cs | 17 ++++++----------- ProductEventArgs.cs | 29 ++++++++++++++++++++--------- Program.cs | 29 ++++++++++++++++------------- 3 files changed, 42 insertions(+), 33 deletions(-) diff --git a/Product.cs b/Product.cs index f68c8c9..17290e6 100644 --- a/Product.cs +++ b/Product.cs @@ -32,11 +32,9 @@ public string Name get { return name; } set { + var args = new ProductEventArgs(name, value, price, price); name = value; - /* - * TODO #4 Инициировать уведомление об - * изменении наименования - */ + NameChanged?.Invoke(this, args); } } /// @@ -47,11 +45,9 @@ public decimal Price get { return price; } set { + var args = new ProductEventArgs(name, name, price, value); price = value; - /* - * TODO #5 Инициировать уведомление об - * изменении стоимости - */ + PriceChanged?.Invoke(this, args); } } @@ -59,9 +55,8 @@ public decimal Price #region Events - /* - * TODO #3 Добавить определение событий - */ + public event EventHandler NameChanged; + public event EventHandler PriceChanged; #endregion diff --git a/ProductEventArgs.cs b/ProductEventArgs.cs index a79a6d6..c480a58 100644 --- a/ProductEventArgs.cs +++ b/ProductEventArgs.cs @@ -1,18 +1,29 @@ -namespace Events +using System; + +namespace Events { /// /// Класс, который служит для передачи аргументов /// в обработчик событий, возникающих в классе /// Product /// - /* - * TODO #1 Закончить определение класса ProductEventArgs - */ - class ProductEventArgs + class ProductEventArgs : EventArgs { - /* - * TODO #2 Добавить определение необходимых компонент - * класса ProductEventArgs - */ + public string Old_Name { get; } + public decimal Old_Price { get; } + public string New_Name { get; } + public decimal New_Price { get; } + + public ProductEventArgs(string old_Name, string new_Name, decimal old_Price, decimal new_Price) + { + /* + * определение необходимых компонент + * класса ProductEventArgs + */ + Old_Name = old_Name; + New_Name = new_Name; + Old_Price = old_Price; + New_Price = new_Price; + } } } diff --git a/Program.cs b/Program.cs index b9247f7..2e219b7 100644 --- a/Program.cs +++ b/Program.cs @@ -1,4 +1,6 @@ -namespace Events +using System; + +namespace Events { class Program { @@ -18,20 +20,21 @@ internal Product Product static void Main(string[] args) { Product product = new Product("Some product name", 0); - - /* - * TODO #6 Назначить обработчики событий в текущем контексте - */ + product.NameChanged += OnNameChanged; + product.PriceChanged += OnPriceChanged; - /* - * TODO #7 Выполнить с экземпляром класса Product действия, - * приводящие к возникновению описанных Вами событий - */ + product.Name = "Apple"; + product.Price= 10; + Console.ReadKey(); } - /* - * TODO #8 Добавить определение обработчиков событий - */ - + private static void OnNameChanged(object sender, ProductEventArgs args) + { + Console.WriteLine("Name changed from {0} to {1}", args.Old_Name, args.New_Name); + } + private static void OnPriceChanged(object sender, ProductEventArgs args) + { + Console.WriteLine("Price changed from {0} to {1}", args.Old_Price, args.New_Price); + } } }