GetXyzEncoder() shouldn't throw if IServiceProvider is null
Also remove dependency on full DI; use Interfaces instead
This commit is contained in:
parent
d5e1b198dc
commit
9988d5205e
|
|
@ -3,7 +3,6 @@
|
|||
|
||||
using System;
|
||||
using Microsoft.Framework.DependencyInjection;
|
||||
using Microsoft.Framework.Internal;
|
||||
|
||||
namespace Microsoft.Framework.WebEncoders
|
||||
{
|
||||
|
|
@ -19,9 +18,9 @@ namespace Microsoft.Framework.WebEncoders
|
|||
/// This method is guaranteed never to return null.
|
||||
/// It will return a default encoder instance if the service provider does not contain one.
|
||||
/// </remarks>
|
||||
public static IHtmlEncoder GetHtmlEncoder([NotNull] this IServiceProvider serviceProvider)
|
||||
public static IHtmlEncoder GetHtmlEncoder(this IServiceProvider serviceProvider)
|
||||
{
|
||||
return serviceProvider.GetService<IHtmlEncoder>() ?? HtmlEncoder.Default;
|
||||
return serviceProvider?.GetService<IHtmlEncoder>() ?? HtmlEncoder.Default;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -31,9 +30,9 @@ namespace Microsoft.Framework.WebEncoders
|
|||
/// This method is guaranteed never to return null.
|
||||
/// It will return a default encoder instance if the service provider does not contain one.
|
||||
/// </remarks>
|
||||
public static IJavaScriptStringEncoder GetJavaScriptStringEncoder([NotNull] this IServiceProvider serviceProvider)
|
||||
public static IJavaScriptStringEncoder GetJavaScriptStringEncoder(this IServiceProvider serviceProvider)
|
||||
{
|
||||
return serviceProvider.GetService<IJavaScriptStringEncoder>() ?? JavaScriptStringEncoder.Default;
|
||||
return serviceProvider?.GetService<IJavaScriptStringEncoder>() ?? JavaScriptStringEncoder.Default;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -43,9 +42,9 @@ namespace Microsoft.Framework.WebEncoders
|
|||
/// This method is guaranteed never to return null.
|
||||
/// It will return a default encoder instance if the service provider does not contain one.
|
||||
/// </remarks>
|
||||
public static IUrlEncoder GetUrlEncoder([NotNull] this IServiceProvider serviceProvider)
|
||||
public static IUrlEncoder GetUrlEncoder(this IServiceProvider serviceProvider)
|
||||
{
|
||||
return serviceProvider.GetService<IUrlEncoder>() ?? UrlEncoder.Default;
|
||||
return serviceProvider?.GetService<IUrlEncoder>() ?? UrlEncoder.Default;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.Framework.DependencyInjection;
|
||||
using Microsoft.Framework.OptionsModel;
|
||||
|
||||
|
|
@ -9,17 +10,13 @@ namespace Microsoft.Framework.WebEncoders
|
|||
{
|
||||
public static class EncoderServices
|
||||
{
|
||||
public static IServiceCollection GetDefaultServices()
|
||||
public static IEnumerable<ServiceDescriptor> GetDefaultServices()
|
||||
{
|
||||
var services = new ServiceCollection();
|
||||
|
||||
// Register the default encoders
|
||||
// We want to call the 'Default' property getters lazily since they perform static caching
|
||||
services.AddSingleton<IHtmlEncoder>(CreateFactory(() => HtmlEncoder.Default, filter => new HtmlEncoder(filter)));
|
||||
services.AddSingleton<IJavaScriptStringEncoder>(CreateFactory(() => JavaScriptStringEncoder.Default, filter => new JavaScriptStringEncoder(filter)));
|
||||
services.AddSingleton<IUrlEncoder>(CreateFactory(() => UrlEncoder.Default, filter => new UrlEncoder(filter)));
|
||||
|
||||
return services;
|
||||
yield return ServiceDescriptor.Singleton<IHtmlEncoder>(CreateFactory(() => HtmlEncoder.Default, filter => new HtmlEncoder(filter)));
|
||||
yield return ServiceDescriptor.Singleton<IJavaScriptStringEncoder>(CreateFactory(() => JavaScriptStringEncoder.Default, filter => new JavaScriptStringEncoder(filter)));
|
||||
yield return ServiceDescriptor.Singleton<IUrlEncoder>(CreateFactory(() => UrlEncoder.Default, filter => new UrlEncoder(filter)));
|
||||
}
|
||||
|
||||
private static Func<IServiceProvider, T> CreateFactory<T>(Func<T> defaultFactory, Func<ICodePointFilter, T> customFilterFactory)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
"allowUnsafe": true
|
||||
},
|
||||
"dependencies": {
|
||||
"Microsoft.Framework.DependencyInjection": "1.0.0-*",
|
||||
"Microsoft.Framework.DependencyInjection.Interfaces": "1.0.0-*",
|
||||
"Microsoft.Framework.OptionsModel": "1.0.0-*",
|
||||
"Microsoft.Framework.NotNullAttribute.Internal": { "type": "build", "version": "1.0.0-*" }
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
{
|
||||
"dependencies": {
|
||||
"Microsoft.Framework.DependencyInjection": "1.0.0-*",
|
||||
"Microsoft.Framework.WebEncoders": "1.0.0-*",
|
||||
"Moq": "4.2.1312.1622",
|
||||
"Newtonsoft.Json": "6.0.6",
|
||||
|
|
|
|||
Loading…
Reference in New Issue