public static async Task <ISampledService> GetServiceAsync(this IAsyncServiceProvider self, FileSample sample) { if (self is null) { throw new ArgumentNullException(nameof(self)); } if (sample is null) { throw new ArgumentNullException(nameof(sample)); } if (!ServiceMapping.TryGetValue(sample.GetType(), out Type serviceType)) { return(null); } PlaySpaceManager playSpace = await self.GetServiceAsync <PlaySpaceManager> ().ConfigureAwait(false); await playSpace.Loading.ConfigureAwait(false); IEnumerable <IEnvironmentService> services = await self.GetServicesAsync <IEnvironmentService> ().ConfigureAwait(false); services = services.Where(s => serviceType.IsAssignableFrom(s.GetType())); PlaySpaceElement space = playSpace.SelectedElement; if (space != null) { services = services.Where(s => space.Services.Contains(s.GetType().GetSimpleTypeName())); } return((ISampledService)services.FirstOrDefault()); }
private static async Task RunPlayspacesSetupAsync(IAsyncServiceProvider services) { var playspaces = await services.GetServiceAsync <PlaySpaceManager> ().ConfigureAwait(false); await playspaces.Loading.ConfigureAwait(false); if (playspaces.Elements.Count == 0) { IAudioService audioService = await services.GetServiceAsync <IAudioService> (); var home = new PlaySpaceElement { Name = "Home", Services = new [] { audioService.GetType().GetSimpleTypeName() } }; ISyncService sync = await services.GetServiceAsync <ISyncService> ().ConfigureAwait(false); await sync.SaveElementAsync(home).ConfigureAwait(false); await playspaces.Loading.ConfigureAwait(false); } }