Разрабатываю игру наподобие HearthStone. Есть состояние стола
public class Table
{
public Table()
{
Players = new List<PlayerModel>();
}
public List<PlayerModel> Players { get; set; }
public int Queue { get; set; }
}
И есть некий диспетчер триггеров, который оповещает о том, что в игре произошло какое-либо событие (карта атакована, сыграно заклинание и т.д)
public class TriggerDispatcher
{
public TriggerDispatcher()
{
if (Triggers == null)
Triggers = new Dictionary<string, ITrigger>();
}
public ITrigger GetTrigger<T>() where T : ITrigger
{
if (Triggers.ContainsKey(typeof(T).Name))
return Triggers[typeof(T).Name];
var trigger = Activator.CreateInstance<T>();
Triggers.Add(typeof(T).Name, trigger);
return trigger;
}
public Dictionary<string, ITrigger> Triggers { get; }
}
public interface ITrigger
{
void AddAction(IAction action);
void RemoveAction(IAction action);
void ExecuteActions(object param);
}
Нужно, чтобы эти два класса были доступны из любого места в пределах одной сессии. На сервере создаются сессии состоящие из двух игроков и для них создаются экземпляры стола и диспетчера. Как организовать их получение в других местах кода в пределах сессии?