private static SimulationItem <T> createFor <T>() where T : ISimulationItemPresenter { var simulationItem = new SimulationItem <T> { Index = _allSimulationItems.Count() }; _allSimulationItems.Add(simulationItem); return(simulationItem); }
public DeviceSimulator(StatelessServiceContext context) : base(context) { var configurationPackage = Context.CodePackageActivationContext.GetConfigurationPackageObject("Config"); var iotHubConnectionStringParameter = configurationPackage.Settings.Sections["ConnectionStrings"].Parameters["IoTHubConnectionString"]; var iotHubConnectionString = iotHubConnectionStringParameter.Value; var hubNameParameter = configurationPackage.Settings.Sections["IoTHub"].Parameters["HubName"]; var hubName = hubNameParameter.Value; var bytes = Context.InitializationData; var json = Encoding.ASCII.GetString(bytes); simulationItem = JsonConvert.DeserializeObject <SimulationItem>(json); var serviceCollection = new ServiceCollection(); serviceCollection.AddScoped <IFileService, FileService>(); serviceCollection.AddScoped <ICSharpService <string>, CSharpService <string> >(); serviceCollection.AddScoped <IFSharpService <string>, FSharpService <string> >(); serviceCollection.AddScoped <IPythonService <string>, PythonService <string> >(); serviceCollection.AddScoped <IJavaScriptService <string>, JavaScriptService <string> >(); serviceCollection.AddScoped <ICodeService <FileInfo, string>, CodeService <FileInfo, string> >(); serviceCollection.AddScoped <ILoggingService, LoggingService>((sp) => { return(new LoggingService(context)); }); serviceCollection.AddScoped <IDeviceStore, DeviceStore>((sp) => { var deviceStore = new DeviceStore(); for (int i = simulationItem.DeviceStartRange; i <= simulationItem.DeviceEndRange; i++) { var loggingService = sp.GetRequiredService <ILoggingService>(); var deviceName = simulationItem.DevicePrefix + '-' + i; var device = new DeviceService(context, loggingService, iotHubConnectionString, hubName, deviceName, simulationItem.DeviceType); deviceStore.Devices().Add(device); } return(deviceStore); }); serviceProvider = serviceCollection.BuildServiceProvider(); // TODO: Move to Program.cs loggingService = serviceProvider.GetRequiredService <ILoggingService>(); csharpService = serviceProvider.GetRequiredService <ICSharpService <string> >(); }