From 1e28575c87a6456d948c66d70223158e38c37ee2 Mon Sep 17 00:00:00 2001 From: outtatime <39130786+outtatime@users.noreply.github.com> Date: Thu, 28 Feb 2019 22:05:22 +0300 Subject: [PATCH] Reut /3 (/4) --- Product.cs | 13 ++++++++++++- ProductEventArgs.cs | 12 ++++++++++-- Program.cs | 19 ++++++++++++++++--- 3 files changed, 38 insertions(+), 6 deletions(-) diff --git a/Product.cs b/Product.cs index f68c8c9..ead262b 100644 --- a/Product.cs +++ b/Product.cs @@ -32,11 +32,16 @@ public string Name get { return name; } set { + var args = new ProductEventArgs(name, value); name = value; /* * TODO #4 Инициировать уведомление об * изменении наименования */ + if (NameChanged != null) + { + NameChanged(this, args); + } } } /// @@ -47,11 +52,16 @@ public decimal Price get { return price; } set { + var args = new ProductEventArgs(price.ToString(), value.ToString()); price = value; /* * TODO #5 Инициировать уведомление об * изменении стоимости */ + if (PriceChanged != null) + { + PriceChanged(this, args); + } } } @@ -62,7 +72,8 @@ public decimal Price /* * TODO #3 Добавить определение событий */ - + public event EventHandler NameChanged; + public event EventHandler PriceChanged; #endregion public Product(string name, decimal price) diff --git a/ProductEventArgs.cs b/ProductEventArgs.cs index a79a6d6..2e89067 100644 --- a/ProductEventArgs.cs +++ b/ProductEventArgs.cs @@ -1,4 +1,5 @@ -namespace Events +using System; +namespace Events { /// /// Класс, который служит для передачи аргументов @@ -8,11 +9,18 @@ /* * TODO #1 Закончить определение класса ProductEventArgs */ - class ProductEventArgs + class ProductEventArgs : EventArgs { /* * TODO #2 Добавить определение необходимых компонент * класса ProductEventArgs */ + public string Old { get; } + public string Current { get; } + public ProductEventArgs(string old, string current) + { + Old = old; + Current = current; + } } } diff --git a/Program.cs b/Program.cs index b9247f7..3570f2c 100644 --- a/Program.cs +++ b/Program.cs @@ -1,4 +1,6 @@ -namespace Events +using System; + +namespace Events { class Program { @@ -18,20 +20,31 @@ internal Product Product static void Main(string[] args) { Product product = new Product("Some product name", 0); - + /* * TODO #6 Назначить обработчики событий в текущем контексте */ + product.NameChanged += OnProductNameChanged; + product.PriceChanged += OnProductPriceChanged; /* * TODO #7 Выполнить с экземпляром класса Product действия, * приводящие к возникновению описанных Вами событий */ + product.Name = "Another product name"; + product.Price = 300; } /* * TODO #8 Добавить определение обработчиков событий */ - + private static void OnProductNameChanged(object sender, ProductEventArgs e) + { + Console.WriteLine("The name of the product was changed from '{0}' to '{1}'", e.Old, e.Current); + } + private static void OnProductPriceChanged(object sender, ProductEventArgs e) + { + Console.WriteLine("The price of the product was changed from '{0}' to '{1}'", e.Old, e.Current); + } } }