Написать код с использованием событий и делегатов - C#
Формулировка задачи:
Подскажите, как правильно реализовать следующую задачу:
Есть класс Man:
Есть класс Boss:
Ну и набросок самой программы:
Хочу, чтобы всякий раз после выполнения метода
public class Man
{
public Man(string _name)
{
Name = _name;
Console.WriteLine("New Man was Born!");
}
private string Name;
private string DisplayName
{
get { return Name; }
set { Name = value; }
}
public void RenameMan(string _newname)
{
DisplayName = _newname;
}
} class Boss
{
private string Name;
public Boss(string _name)
{
Name = _name;
}
public void SayWow()
{
Console.WriteLine("{0} say: WOW", Name);
}
} Man Sasha = new Man("Sasha");
Boss MyBoss = new Boss("MyBoss");
Sasha.RenameMan("Masha");
Console.ReadKey();RenameMan
(класса Man), экземпляр класса (все экземпляры)Boss
"говорил" "Wow!" (выполнялся методSayWow()
). Пожалуйста, научитеРешение задачи: «Написать код с использованием событий и делегатов»
textual
Листинг программы
//обьявим делегат, который ничего не возвращает и не принимает(в соответсвии с методом SatWot) чтобы сделать далее событие
public delegate void Deleg();
public class Man
{
private string Name;
public event Deleg SayW; //обьявляем событие
private string DisplayName
{
get { return Name; }
set { Name = value; }
}
public void RenameMan(string _newname)
{
DisplayName = _newname;
//Если событие имеет ссылку на метод(это просто меры предосторожности) то тогда выводить следующие:
if (SayW != null)
{
Console.WriteLine("{0}", SayW.Target.ToString()); SayW();
}
}
public Man(string _name)
{
Name = _name;
Console.WriteLine("New Man was Born!");
}
}
class Boss
{
private string Name;
public void SayWow()
{
Console.WriteLine("{0} say: WOW", Name);
}
public override string ToString()
{
return String.Format("Instance of class Boss have name is {0}", Name); //тут просто так переопределил метод ToString чтобы событие выбивало имя класса, это я так, для себя)))
}
public Boss(string _name)
{
Name = _name;
}
}
class Program
{
static void Main(string[] args)
{
Man Sasha = new Man("Sasha");
Boss MyBoss = new Boss("MyBoss");
Sasha.SayW += MyBoss.SayWow;//подпись на событие, чтобы оно работало в методе
Sasha.RenameMan("Masha");
Console.ReadKey();
}
}