diff --git a/Product.cs b/Product.cs index f68c8c9..03affeb 100644 --- a/Product.cs +++ b/Product.cs @@ -32,11 +32,10 @@ public string Name get { return name; } set { + var args = new ProductEventArgs(name, value, price, price); name = value; - /* - * TODO #4 Инициировать уведомление об - * изменении наименования - */ + /*TODO #4 Инициировать уведомление об изменении наименования*/ + NameChanged?.Invoke(this, args); } } /// @@ -47,11 +46,10 @@ public decimal Price get { return price; } set { + var args = new ProductEventArgs(name, name, price, value); price = value; - /* - * TODO #5 Инициировать уведомление об - * изменении стоимости - */ + /*TODO #5 Инициировать уведомление об изменении стоимости*/ + PriceChanged?.Invoke(this, args); } } @@ -59,9 +57,9 @@ public decimal Price #region Events - /* - * TODO #3 Добавить определение событий - */ + /*TODO #3 Добавить определение событий*/ + public event EventHandler NameChanged; + public event EventHandler PriceChanged; #endregion diff --git a/ProductEventArgs.cs b/ProductEventArgs.cs index a79a6d6..7c48511 100644 --- a/ProductEventArgs.cs +++ b/ProductEventArgs.cs @@ -1,18 +1,26 @@ -namespace Events -{ +using System; + +namespace Events +{ /// /// Класс, который служит для передачи аргументов /// в обработчик событий, возникающих в классе /// Product /// - /* - * TODO #1 Закончить определение класса ProductEventArgs - */ - class ProductEventArgs + /*TODO #1 Закончить определение класса ProductEventArgs*/ + class ProductEventArgs : EventArgs { - /* - * TODO #2 Добавить определение необходимых компонент - * класса ProductEventArgs - */ + public string Prev_Name { get; } + public string New_Name { get; } + public decimal Prev_Price { get; } + public decimal New_Price { get; } + /* TODO #2 Добавить определение необходимых компонент класса ProductEventArgs*/ + public ProductEventArgs(string prev_Name, string new_Name, decimal prev_Price, decimal new_Price) + { + Prev_Name = prev_Name; + New_Name = new_Name; + Prev_Price = prev_Price; + New_Price = new_Price; + } } } diff --git a/Program.cs b/Program.cs index b9247f7..aaf8068 100644 --- a/Program.cs +++ b/Program.cs @@ -1,37 +1,43 @@ -namespace Events -{ - class Program - { - internal Product Product - { - get - { - throw new System.NotImplementedException(); - } - - set - { - throw new System.NotImplementedException(); - } - } - - static void Main(string[] args) - { - Product product = new Product("Some product name", 0); - - /* - * TODO #6 Назначить обработчики событий в текущем контексте - */ - - /* - * TODO #7 Выполнить с экземпляром класса Product действия, - * приводящие к возникновению описанных Вами событий - */ - } - - /* - * TODO #8 Добавить определение обработчиков событий - */ - - } -} +using System; + +namespace Events +{ + class Program + { + internal Product Product + { + get + { + throw new System.NotImplementedException(); + } + + set + { + throw new System.NotImplementedException(); + } + } + + 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.Price = 999; + product.Name = "Cake"; + Console.ReadKey(); + } + + /*TODO #8 Добавить определение обработчиков событий*/ + private static void OnPriceChanged(object addresser, ProductEventArgs args) + { + Console.WriteLine("Price has been changed from {0} to {1}!", args.Prev_Price, args.New_Price); + } + private static void OnNameChanged(object addresser, ProductEventArgs args) + { + Console.WriteLine("Name has been changed from {0} to {1}!", args.Prev_Name, args.New_Name); + } + } +}