Давайте предположим, что у нас есть MissionA, MissionB и мы хотим трансляцию, когда начнется любая миссия.Как мне добиться этого в c #?
Примерно так (они разные в разных файлах .cs):
Общее задание (в MissionGeneral.cs):
namespace MissionGeneral
{
public class MissionGeneral
{
public delegate void MissionStartedEvent(string name);
public event MissionStartedEvent OnMissionStart;
}
}
Под миссию A (в MissionA.cs):
namespace MissionA
{
public class MissionA
{
public delegate void MissionStartedEvent(string name);
public event MissionStartedEvent OnMissionStart;
protected virtual void HandleMissionStartedEvent()
{
OnMissionStart?.Invoke("MissionA");
}
}
}
Под миссию B (в MissionB.cs):
namespace MissionB
{
public class MissionB
{
public delegate void MissionStartedEvent(string name);
public event MissionStartedEvent OnMissionStart;
protected virtual void HandleMissionStartedEvent()
{
OnMissionStart?.Invoke("MissionB");
}
}
}
Broadcaster (в Broadcaster.cs):
using MissionGeneral;
namespace Broadcaster
{
public class Broadcaster
{
public MissionGeneral mission = new MissionGeneral();
public Broadcaster()
{
mission.OnMissionStart += (_name) =>
{
Console.WriteLine($"This is {_name}");
if (_name == "MissionA") Console.WriteLine("Additional MissionA info");
else if (_name == "MissionB") Console.WriteLine("Additional MissionB info");
};
}
}
}