Make RegistryPolicyResolver an interface to fix 3d party DI (#275)
This commit is contained in:
parent
ee009982dc
commit
46dadbb186
|
|
@ -67,7 +67,7 @@ namespace Microsoft.Extensions.DependencyInjection
|
||||||
{
|
{
|
||||||
if (OSVersionUtil.IsWindows())
|
if (OSVersionUtil.IsWindows())
|
||||||
{
|
{
|
||||||
services.TryAddSingleton<RegistryPolicyResolver>();
|
services.TryAddSingleton<IRegistryPolicyResolver, RegistryPolicyResolver>();
|
||||||
}
|
}
|
||||||
|
|
||||||
services.TryAddEnumerable(
|
services.TryAddEnumerable(
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace Microsoft.AspNetCore.DataProtection
|
||||||
|
{
|
||||||
|
// Single implementation of this interface is conditionally added to DI on Windows
|
||||||
|
// We have to use interface because some DI implementations would try to activate class
|
||||||
|
// even if it was not registered causing problems crossplat
|
||||||
|
internal interface IRegistryPolicyResolver
|
||||||
|
{
|
||||||
|
RegistryPolicy ResolvePolicy();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -13,7 +13,7 @@ namespace Microsoft.AspNetCore.DataProtection.Internal
|
||||||
{
|
{
|
||||||
internal class KeyManagementOptionsSetup : IConfigureOptions<KeyManagementOptions>
|
internal class KeyManagementOptionsSetup : IConfigureOptions<KeyManagementOptions>
|
||||||
{
|
{
|
||||||
private readonly RegistryPolicyResolver _registryPolicyResolver;
|
private readonly IRegistryPolicyResolver _registryPolicyResolver;
|
||||||
private readonly ILoggerFactory _loggerFactory;
|
private readonly ILoggerFactory _loggerFactory;
|
||||||
|
|
||||||
public KeyManagementOptionsSetup()
|
public KeyManagementOptionsSetup()
|
||||||
|
|
@ -26,12 +26,12 @@ namespace Microsoft.AspNetCore.DataProtection.Internal
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public KeyManagementOptionsSetup(RegistryPolicyResolver registryPolicyResolver)
|
public KeyManagementOptionsSetup(IRegistryPolicyResolver registryPolicyResolver)
|
||||||
: this(NullLoggerFactory.Instance, registryPolicyResolver)
|
: this(NullLoggerFactory.Instance, registryPolicyResolver)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public KeyManagementOptionsSetup(ILoggerFactory loggerFactory, RegistryPolicyResolver registryPolicyResolver)
|
public KeyManagementOptionsSetup(ILoggerFactory loggerFactory, IRegistryPolicyResolver registryPolicyResolver)
|
||||||
{
|
{
|
||||||
_loggerFactory = loggerFactory;
|
_loggerFactory = loggerFactory;
|
||||||
_registryPolicyResolver = registryPolicyResolver;
|
_registryPolicyResolver = registryPolicyResolver;
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ namespace Microsoft.AspNetCore.DataProtection
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A type which allows reading policy from the system registry.
|
/// A type which allows reading policy from the system registry.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal sealed class RegistryPolicyResolver
|
internal sealed class RegistryPolicyResolver: IRegistryPolicyResolver
|
||||||
{
|
{
|
||||||
private readonly Func<RegistryKey> _getPolicyRegKey;
|
private readonly Func<RegistryKey> _getPolicyRegKey;
|
||||||
private readonly IActivator _activator;
|
private readonly IActivator _activator;
|
||||||
|
|
@ -88,13 +88,7 @@ namespace Microsoft.AspNetCore.DataProtection
|
||||||
return sinks;
|
return sinks;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
public RegistryPolicy ResolvePolicy()
|
||||||
/// Returns a <see cref="RegistryPolicy"/> from the default registry location.
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryPolicy ResolveDefaultPolicy(IActivator activator)
|
|
||||||
=> new RegistryPolicyResolver(activator).ResolvePolicy();
|
|
||||||
|
|
||||||
internal RegistryPolicy ResolvePolicy()
|
|
||||||
{
|
{
|
||||||
using (var registryKey = _getPolicyRegKey())
|
using (var registryKey = _getPolicyRegKey())
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue