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
24 changes: 11 additions & 13 deletions Product.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System;
using System;

namespace Events
{
Expand Down Expand Up @@ -32,11 +32,9 @@ public string Name
get { return name; }
set
{
var args = new ProductChangedEventArgs<string>(name, value);
name = value;
/*
* TODO #4 Инициировать уведомление об
* изменении наименования
*/
NameChanged?.Invoke(this, args);
}
}
/// <summary>
Expand All @@ -46,22 +44,20 @@ public decimal Price
{
get { return price; }
set
{
{
var args = new ProductChangedEventArgs<decimal>(price, value);
price = value;
/*
* TODO #5 Инициировать уведомление об
* изменении стоимости
*/
PriceChanged?.Invoke(this, args);
}
}

#endregion

#region Events

/*
* TODO #3 Добавить определение событий
*/
public event EventHandler<ProductChangedEventArgs<string>> NameChanged;

public event EventHandler<ProductChangedEventArgs<decimal>> PriceChanged;

#endregion

Expand All @@ -73,3 +69,5 @@ public Product(string name, decimal price)

}
}


24 changes: 15 additions & 9 deletions ProductEventArgs.cs
Original file line number Diff line number Diff line change
@@ -1,18 +1,24 @@
namespace Events
sing System;

namespace Events
{
/// <summary>
/// Класс, который служит для передачи аргументов
/// в обработчик событий, возникающих в классе
/// <seealso cref="Product">Product</seealso>
/// </summary>
/*
* TODO #1 Закончить определение класса ProductEventArgs
*/
class ProductEventArgs

class ProductChangedEventArgs<T> : 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;
}
}
}

33 changes: 19 additions & 14 deletions Program.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
namespace Events
using System;

namespace Events
{
class Program
{
Expand All @@ -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<decimal> e)
{
Console.WriteLine("Цена продукта [0] изменилась с [1] на [2]", sender.Name, e.OldValue, e.NewValue);
}

/*
* TODO #8 Добавить определение обработчиков событий
*/
private void OnNameChanged(Product sender, ProductChangedEventArgs<string> e)
{
Console.WriteLine("Название продукта [0] изменилось с [1] на [0]", e.NewValue,e.OldValue);
}

}
}