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; } } } +