using System; using Wayne.Lib; namespace Wayne.ForecourtControl.Fusion { public class FUSIONForecourtControlFactory : IForecourtControlFactory { private readonly Func authorizationIdGeneratorFactory; public FUSIONForecourtControlFactory(Func authorizationIdGeneratorFactory) { this.authorizationIdGeneratorFactory = authorizationIdGeneratorFactory; } public IForecourtControl CreateForecourtControl(int deviceId, IServiceLocator serviceLocator) { IForecourtConfiguration forecourtConfiguration; try { forecourtConfiguration = serviceLocator.GetService(); } catch (ServiceContainerException) { return FUSIONFactory.CreateForecourtControl(deviceId, authorizationIdGeneratorFactory(deviceId)); } return FUSIONFactory.CreateForecourtControl(deviceId, forecourtConfiguration, authorizationIdGeneratorFactory(deviceId)); } } }