From c21c3e946f69bfdffd29410405c462c53470bc33 Mon Sep 17 00:00:00 2001 From: skalenko <38497263+skalenko@users.noreply.github.com> Date: Sun, 3 Mar 2019 16:21:48 +0300 Subject: [PATCH 1/4] Update Program.cs --- Program.cs | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/Program.cs b/Program.cs index b9247f7..6c96cfb 100644 --- a/Program.cs +++ b/Program.cs @@ -1,4 +1,7 @@ -namespace Events +using System; + + +namespace Events { class Program { @@ -18,20 +21,36 @@ 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 = "NewNewNew"; + product.Price = 1000; } /* * TODO #8 Добавить определение обработчиков событий */ + private static void onNameChanged(object sender, ProductEventArgs e) + { + Product product = sender as Product; + Console.WriteLine("Name has been changed from " + e.oldName + " to " + product.Name); + } + + private static void onPriceChanged(object sender, ProductEventArgs e) + { + Product product = sender as Product; + Console.WriteLine("Price has been changed from " + e.oldPrice + " to " + product.Price); + } + } } From 9836c6c64b00aaebd1e6acdadac94b2f334c64c8 Mon Sep 17 00:00:00 2001 From: skalenko <38497263+skalenko@users.noreply.github.com> Date: Sun, 3 Mar 2019 16:22:12 +0300 Subject: [PATCH 2/4] done --- Product.cs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/Product.cs b/Product.cs index f68c8c9..9fba648 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 { + ProductEventArgs arg = new ProductEventArgs(name); name = value; /* * TODO #4 Инициировать уведомление об * изменении наименования */ + if (nameChanged != null) + { + nameChanged(this, arg); + } } } /// @@ -47,11 +52,16 @@ public decimal Price get { return price; } set { + ProductEventArgs arg = new ProductEventArgs(price); price = value; /* * TODO #5 Инициировать уведомление об * изменении стоимости */ + if (priceChanged != null) + { + priceChanged(this, arg); + } } } @@ -62,6 +72,8 @@ public decimal Price /* * TODO #3 Добавить определение событий */ + public event EventHandler nameChanged; + public event EventHandler priceChanged; #endregion From 8adf3d011d0de675b8d42eeb9474904bde2539c5 Mon Sep 17 00:00:00 2001 From: skalenko <38497263+skalenko@users.noreply.github.com> Date: Sun, 3 Mar 2019 16:22:27 +0300 Subject: [PATCH 3/4] done --- ProductEventArgs.cs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/ProductEventArgs.cs b/ProductEventArgs.cs index a79a6d6..4e4fc89 100644 --- a/ProductEventArgs.cs +++ b/ProductEventArgs.cs @@ -1,4 +1,6 @@ -namespace Events +using System; + +namespace Events { /// /// Класс, который служит для передачи аргументов @@ -8,11 +10,23 @@ /* * TODO #1 Закончить определение класса ProductEventArgs */ - class ProductEventArgs + class ProductEventArgs : EventArgs { /* * TODO #2 Добавить определение необходимых компонент * класса ProductEventArgs */ + public string oldName { get; } + public decimal oldPrice { get; } + + public ProductEventArgs(string oldName) + { + this.oldName = oldName; + } + + public ProductEventArgs(decimal oldPrice) + { + this.oldPrice = oldPrice; + } } } From 4b37b23204a404dd6c797cbb3c617cce4bef35d6 Mon Sep 17 00:00:00 2001 From: skalenko <38497263+skalenko@users.noreply.github.com> Date: Sun, 3 Mar 2019 16:22:45 +0300 Subject: [PATCH 4/4] done --- Program.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/Program.cs b/Program.cs index 6c96cfb..5bc3372 100644 --- a/Program.cs +++ b/Program.cs @@ -1,6 +1,5 @@ using System; - namespace Events { class Program