From b4a3c852c5ce1504d08b6dab44f7d510df9340ee Mon Sep 17 00:00:00 2001 From: Steve Sanderson Date: Thu, 22 Feb 2018 18:47:07 +0000 Subject: [PATCH] Implement DefaultBrowserServiceProvider using Microsoft.Extensions.DependencyInjection.ServiceCollection --- ...Microsoft.AspNetCore.Blazor.Browser.csproj | 4 +++ .../Services/DefaultBrowserServiceProvider.cs | 27 ++++++++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/Microsoft.AspNetCore.Blazor.Browser/Microsoft.AspNetCore.Blazor.Browser.csproj b/src/Microsoft.AspNetCore.Blazor.Browser/Microsoft.AspNetCore.Blazor.Browser.csproj index e1da5ca8d4..d4336cde80 100644 --- a/src/Microsoft.AspNetCore.Blazor.Browser/Microsoft.AspNetCore.Blazor.Browser.csproj +++ b/src/Microsoft.AspNetCore.Blazor.Browser/Microsoft.AspNetCore.Blazor.Browser.csproj @@ -4,6 +4,10 @@ netstandard2.0 + + + + diff --git a/src/Microsoft.AspNetCore.Blazor.Browser/Services/DefaultBrowserServiceProvider.cs b/src/Microsoft.AspNetCore.Blazor.Browser/Services/DefaultBrowserServiceProvider.cs index 6d1780b9d5..0bfa8d0a9d 100644 --- a/src/Microsoft.AspNetCore.Blazor.Browser/Services/DefaultBrowserServiceProvider.cs +++ b/src/Microsoft.AspNetCore.Blazor.Browser/Services/DefaultBrowserServiceProvider.cs @@ -1,6 +1,7 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using Microsoft.Extensions.DependencyInjection; using System; namespace Microsoft.AspNetCore.Blazor.Browser.Services @@ -11,10 +12,34 @@ namespace Microsoft.AspNetCore.Blazor.Browser.Services /// public class DefaultBrowserServiceProvider : IServiceProvider { + private readonly IServiceProvider _underlyingProvider; + + /// + /// Constructs an instance of . + /// + public DefaultBrowserServiceProvider(): this(null) + { + } + + /// + /// Constructs an instance of . + /// + /// A callback that can be used to configure the . + public DefaultBrowserServiceProvider(Action configure) + { + var serviceCollection = new ServiceCollection(); + AddDefaultServices(serviceCollection); + configure?.Invoke(serviceCollection); + _underlyingProvider = serviceCollection.BuildServiceProvider(); + } + /// public object GetService(Type serviceType) + => _underlyingProvider.GetService(serviceType); + + private void AddDefaultServices(ServiceCollection serviceCollection) { - throw new NotImplementedException(); + // TODO: Add default services for HttpClient, IUrlHelper, etc. } } }