예제 #1
0
        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());
        }
예제 #2
0
        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);
            }
        }