using System; using System.Collections.Generic; namespace AlicizaX { public interface IProcedureService : IService, IServiceTickable { Type CurrentProcedureType { get; } void InitializeProcedure(IEnumerable availableProcedures, Type defaultProcedureType); void ClearAllProcedures(); bool ContainsProcedure(Type procedureType); bool TrySwitchProcedure(Type procedureType); } public static class ProcedureServiceExtensions { public static bool SwitchProcedure(this IProcedureService procedureService) where T : IProcedure { return procedureService.TrySwitchProcedure(typeof(T)); } public static bool SwitchProcedure(this IProcedureService procedureService, Type procedureType) { return procedureService.TrySwitchProcedure(procedureType); } } }