67 lines
1.8 KiB
C#
67 lines
1.8 KiB
C#
using System.Collections.Generic;
|
|
using Runtime.Controller;
|
|
|
|
namespace Controller
|
|
{
|
|
public class Controllers : IExecute, IInitialization, ILateExecute, ICleanup
|
|
{
|
|
private readonly List<IInitialization> _initializeControllers;
|
|
private readonly List<IExecute> _executeControllers;
|
|
private readonly List<ILateExecute> _lateControllers;
|
|
private readonly List<ICleanup> _cleanupControllers;
|
|
|
|
public Controllers()
|
|
{
|
|
_initializeControllers = new List<IInitialization>();
|
|
_executeControllers = new List<IExecute>();
|
|
_lateControllers = new List<ILateExecute>();
|
|
_cleanupControllers = new List<ICleanup>();
|
|
}
|
|
|
|
internal Controllers Add(IController controller)
|
|
{
|
|
if (controller is IInitialization initializeController)
|
|
{
|
|
_initializeControllers.Add(initializeController);
|
|
}
|
|
|
|
if (controller is IExecute executeController)
|
|
{
|
|
_executeControllers.Add(executeController);
|
|
}
|
|
|
|
if (controller is ILateExecute lateExecuteController)
|
|
{
|
|
_lateControllers.Add(lateExecuteController);
|
|
}
|
|
|
|
if (controller is ICleanup cleanupController)
|
|
{
|
|
_cleanupControllers.Add(cleanupController);
|
|
}
|
|
|
|
return this;
|
|
}
|
|
|
|
public void Execute()
|
|
{
|
|
_executeControllers.ForEach(x => x.Execute());
|
|
}
|
|
|
|
public void Init()
|
|
{
|
|
_initializeControllers.ForEach(x=> x.Init());
|
|
}
|
|
|
|
public void LateExecute()
|
|
{
|
|
_lateControllers.ForEach(x => x.LateExecute());
|
|
}
|
|
|
|
public void Cleanup()
|
|
{
|
|
_cleanupControllers.ForEach(x => x.Cleanup());
|
|
}
|
|
}
|
|
}
|