Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 18 additions & 5 deletions Product.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using System;
using System;
using System.Runtime.InteropServices;

namespace Events
namespace Home_Delegates
{
/// <summary>
/// Класс должен описывать представление о товаре.
Expand Down Expand Up @@ -32,11 +33,16 @@ public string Name
get { return name; }
set
{
name = value;
/*
* TODO #4 Инициировать уведомление об
* изменении наименования
*/
var args = new ProductChangedEventArgs<string>(/*Name,*/name, value);
name = value;
if (NameChanged != null)
{
NameChanged(this, args);
}
}
}
/// <summary>
Expand All @@ -47,11 +53,16 @@ public decimal Price
get { return price; }
set
{
price = value;
/*
* TODO #5 Инициировать уведомление об
* изменении стоимости
*/
var args = new ProductChangedEventArgs<decimal>(/*Name,*/price, value);
price = value;
if (PriceChanged != null)
{
PriceChanged(this, args);
}
}
}

Expand All @@ -62,7 +73,9 @@ public decimal Price
/*
* TODO #3 Добавить определение событий
*/

public event EventHandler<ProductChangedEventArgs<string>> NameChanged;
public event EventHandler<ProductChangedEventArgs<decimal>> PriceChanged;

#endregion

public Product(string name, decimal price)
Expand Down
30 changes: 30 additions & 0 deletions ProductChangedEventArgs.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
using System;

namespace Home_Delegates
{
/// <summary>
/// Класс, который служит для передачи аргументов
/// в обработчик событий, возникающих в классе
/// <seealso cref="Product">Product</seealso>
/// </summary>
/*
* TODO #1 Закончить определение класса ProductEventArgs
*/
public class ProductChangedEventArgs<T> : EventArgs
{
/*
* TODO #2 Добавить определение необходимых компонент
* класса ProductEventArgs
*/
/*public string Id { get; }*/
public T OldValue { get; }
public T NewValue { get; }

public ProductChangedEventArgs(/*string id, */T oldValue, T newValue)
{
/*Id = id;*/
OldValue = oldValue;
NewValue = newValue;
}
}
}
20 changes: 17 additions & 3 deletions Program.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
namespace Events
using System;

namespace Home_Delegates
{
class Program
{
Expand All @@ -22,16 +24,28 @@ static void Main(string[] args)
/*
* TODO #6 Назначить обработчики событий в текущем контексте
*/

product.PriceChanged += OnPriceChanged;
product.NameChanged += OnNameChanged;
product.Name = "kek";
product.Price = 100;
/*
* TODO #7 Выполнить с экземпляром класса Product действия,
* приводящие к возникновению описанных Вами событий
*/
}

private static void OnNameChanged(object sender, ProductChangedEventArgs<string> e)
{
Console.WriteLine("Товар '{0}' изменил название с '{0}' на '{1}'", e.OldValue, e.NewValue);
}

private static void OnPriceChanged(object sender, ProductChangedEventArgs<decimal> e)
{
Console.WriteLine("Товар '{0}' изменил цену с '{1}' на '{2}'", ((Product)sender).Name, e.OldValue, e.NewValue);
}
/*
* TODO #8 Добавить определение обработчиков событий
*/

}
}
}