From 63a6fbe6f3feb9ece3b92b2f6def99bac891b303 Mon Sep 17 00:00:00 2001
From: ksemya <47814139+ksemya@users.noreply.github.com>
Date: Wed, 13 Mar 2019 01:06:35 +0300
Subject: [PATCH 1/4] Product.cs
---
Product.cs | 77 ++++++++++++++++--------------------------------------
1 file changed, 22 insertions(+), 55 deletions(-)
diff --git a/Product.cs b/Product.cs
index f68c8c9..1ef4296 100644
--- a/Product.cs
+++ b/Product.cs
@@ -1,75 +1,42 @@
-using System;
+using System;
namespace Events
{
- ///
- /// Класс должен описывать представление о товаре.
- /// В рамках лабораторной работы должен являться
- /// источником события
- ///
- class Product
+ class Program
{
-
- #region Variables
- ///
- /// Наименование
- ///
- private string name;
- ///
- /// Стоимость
- ///
- private decimal price;
-
- #endregion
-
- #region Properties
-
- ///
- /// Наименование
- ///
- public string Name
+ internal Product Product
{
- get { return name; }
- set
+ get
{
- name = value;
- /*
- * TODO #4 Инициировать уведомление об
- * изменении наименования
- */
+ throw new System.NotImplementedException();
}
- }
- ///
- /// Стоимость
- ///
- public decimal Price
- {
- get { return price; }
+
set
{
- price = value;
- /*
- * TODO #5 Инициировать уведомление об
- * изменении стоимости
- */
+ throw new System.NotImplementedException();
}
}
- #endregion
-
- #region Events
+ static void Main(string[] args)
+ {
+ Product product = new Product("Car", 1000);
- /*
- * TODO #3 Добавить определение событий
- */
+ product.NameChanged += OnNameChanged;
+ product.PriceChanged += OnPriceChanged;
+ product.Name = "Super Car";
+ product.Price = 10839;
+ }
- #endregion
+ private void OnPriceChanged(Product sender, ProductChangedEventArgs e)
+ {
+ Console.WriteLine("Цена продукта [0] изменилась с [1] на [2]", sender.Name, e.OldValue, e.NewValue);
+ }
- public Product(string name, decimal price)
+ private void OnNameChanged(Product sender, ProductChangedEventArgs e)
{
- Name = name;
- Price = price;
+ Console.WriteLine("Название продукта [0] изменилось с [1] на [0]", e.NewValue,e.OldValue);
}
}
}
+
From 03c65d33594d0ec47f6f545a2faf0ef675251b4e Mon Sep 17 00:00:00 2001
From: ksemya <47814139+ksemya@users.noreply.github.com>
Date: Wed, 13 Mar 2019 01:13:25 +0300
Subject: [PATCH 2/4] Update ProductEventArgs.cs
---
ProductEventArgs.cs | 24 +++++++++++++++---------
1 file changed, 15 insertions(+), 9 deletions(-)
diff --git a/ProductEventArgs.cs b/ProductEventArgs.cs
index a79a6d6..7fdc6da 100644
--- a/ProductEventArgs.cs
+++ b/ProductEventArgs.cs
@@ -1,18 +1,24 @@
-namespace Events
+sing System;
+
+namespace Events
{
///
/// Класс, который служит для передачи аргументов
/// в обработчик событий, возникающих в классе
/// Product
///
- /*
- * TODO #1 Закончить определение класса ProductEventArgs
- */
- class ProductEventArgs
+
+ class ProductChangedEventArgs : EventArgs
{
- /*
- * TODO #2 Добавить определение необходимых компонент
- * класса ProductEventArgs
- */
+ public T OldValue { get; internal set; }
+
+ public T NewValue { get; internal set; }
+
+ public ProductChangedEventArgs(T oldValue, T newValue)
+ {
+ OldValue = oldValue;
+ NewValue = newValue;
+ }
}
}
+
From 634274b5e1a3e2295edd0543fd6a44d8e177cbc4 Mon Sep 17 00:00:00 2001
From: ksemya <47814139+ksemya@users.noreply.github.com>
Date: Wed, 13 Mar 2019 01:14:28 +0300
Subject: [PATCH 3/4] Update Program.cs
---
Program.cs | 33 +++++++++++++++++++--------------
1 file changed, 19 insertions(+), 14 deletions(-)
diff --git a/Program.cs b/Program.cs
index b9247f7..1ef4296 100644
--- a/Program.cs
+++ b/Program.cs
@@ -1,4 +1,6 @@
-namespace Events
+using System;
+
+namespace Events
{
class Program
{
@@ -17,21 +19,24 @@ internal Product Product
static void Main(string[] args)
{
- Product product = new Product("Some product name", 0);
-
- /*
- * TODO #6 Назначить обработчики событий в текущем контексте
- */
-
- /*
- * TODO #7 Выполнить с экземпляром класса Product действия,
- * приводящие к возникновению описанных Вами событий
- */
+ Product product = new Product("Car", 1000);
+
+ product.NameChanged += OnNameChanged;
+ product.PriceChanged += OnPriceChanged;
+ product.Name = "Super Car";
+ product.Price = 10839;
+ }
+
+ private void OnPriceChanged(Product sender, ProductChangedEventArgs e)
+ {
+ Console.WriteLine("Цена продукта [0] изменилась с [1] на [2]", sender.Name, e.OldValue, e.NewValue);
}
- /*
- * TODO #8 Добавить определение обработчиков событий
- */
+ private void OnNameChanged(Product sender, ProductChangedEventArgs e)
+ {
+ Console.WriteLine("Название продукта [0] изменилось с [1] на [0]", e.NewValue,e.OldValue);
+ }
}
}
+
From c6b40e02a3a6089ba6de8997ba775517d6f995d4 Mon Sep 17 00:00:00 2001
From: ksemya <47814139+ksemya@users.noreply.github.com>
Date: Wed, 13 Mar 2019 01:15:20 +0300
Subject: [PATCH 4/4] Update Product.cs
---
Product.cs | 73 ++++++++++++++++++++++++++++++++++++++----------------
1 file changed, 52 insertions(+), 21 deletions(-)
diff --git a/Product.cs b/Product.cs
index 1ef4296..b7fab79 100644
--- a/Product.cs
+++ b/Product.cs
@@ -2,41 +2,72 @@
namespace Events
{
- class Program
+ ///
+ /// Класс должен описывать представление о товаре.
+ /// В рамках лабораторной работы должен являться
+ /// источником события
+ ///
+ class Product
{
- internal Product Product
+
+ #region Variables
+ ///
+ /// Наименование
+ ///
+ private string name;
+ ///
+ /// Стоимость
+ ///
+ private decimal price;
+
+ #endregion
+
+ #region Properties
+
+ ///
+ /// Наименование
+ ///
+ public string Name
{
- get
+ get { return name; }
+ set
{
- throw new System.NotImplementedException();
+ var args = new ProductChangedEventArgs(name, value);
+ name = value;
+ NameChanged?.Invoke(this, args);
}
-
+ }
+ ///
+ /// Стоимость
+ ///
+ public decimal Price
+ {
+ get { return price; }
set
- {
- throw new System.NotImplementedException();
+ {
+ var args = new ProductChangedEventArgs(price, value);
+ price = value;
+ PriceChanged?.Invoke(this, args);
}
}
- static void Main(string[] args)
- {
- Product product = new Product("Car", 1000);
+ #endregion
- product.NameChanged += OnNameChanged;
- product.PriceChanged += OnPriceChanged;
- product.Name = "Super Car";
- product.Price = 10839;
- }
+ #region Events
- private void OnPriceChanged(Product sender, ProductChangedEventArgs e)
- {
- Console.WriteLine("Цена продукта [0] изменилась с [1] на [2]", sender.Name, e.OldValue, e.NewValue);
- }
+ public event EventHandler> NameChanged;
+
+ public event EventHandler> PriceChanged;
- private void OnNameChanged(Product sender, ProductChangedEventArgs e)
+ #endregion
+
+ public Product(string name, decimal price)
{
- Console.WriteLine("Название продукта [0] изменилось с [1] на [0]", e.NewValue,e.OldValue);
+ Name = name;
+ Price = price;
}
}
}
+