Remove CultureInfoCache (#323)
This commit is contained in:
parent
d1ee393c72
commit
5ac6965dc6
|
|
@ -14,8 +14,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{7987
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LocalizationSample", "samples\LocalizationSample\LocalizationSample.csproj", "{55D9501F-15B9-4339-A0AB-6082850E5FCE}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LocalizationSample", "samples\LocalizationSample\LocalizationSample.csproj", "{55D9501F-15B9-4339-A0AB-6082850E5FCE}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Extensions.Globalization.CultureInfoCache", "src\Microsoft.Extensions.Globalization.CultureInfoCache\Microsoft.Extensions.Globalization.CultureInfoCache.csproj", "{F3988D3A-A4C8-4FD7-BAFE-13E0D0A1659A}"
|
|
||||||
EndProject
|
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{B723DB83-A670-4BCB-95FB-195361331AD2}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{B723DB83-A670-4BCB-95FB-195361331AD2}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Extensions.Localization.Tests", "test\Microsoft.Extensions.Localization.Tests\Microsoft.Extensions.Localization.Tests.csproj", "{287AD58D-DF34-4F16-8616-FD78FA1CADF9}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Extensions.Localization.Tests", "test\Microsoft.Extensions.Localization.Tests\Microsoft.Extensions.Localization.Tests.csproj", "{287AD58D-DF34-4F16-8616-FD78FA1CADF9}"
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\Microsoft.Extensions.Globalization.CultureInfoCache\Microsoft.Extensions.Globalization.CultureInfoCache.csproj" />
|
|
||||||
<ProjectReference Include="..\Microsoft.Extensions.Localization.Abstractions\Microsoft.Extensions.Localization.Abstractions.csproj" />
|
<ProjectReference Include="..\Microsoft.Extensions.Localization.Abstractions\Microsoft.Extensions.Localization.Abstractions.csproj" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Http.Extensions" Version="1.2.0-*" />
|
<PackageReference Include="Microsoft.AspNetCore.Http.Extensions" Version="1.2.0-*" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Options" Version="1.2.0-*" />
|
<PackageReference Include="Microsoft.Extensions.Options" Version="1.2.0-*" />
|
||||||
|
|
|
||||||
|
|
@ -1,68 +0,0 @@
|
||||||
// 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 System;
|
|
||||||
using System.Collections.Concurrent;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Globalization;
|
|
||||||
using System.Linq;
|
|
||||||
|
|
||||||
namespace Microsoft.Extensions.Globalization
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Provides read-only cached instances of <see cref="CultureInfo"/>.
|
|
||||||
/// </summary>
|
|
||||||
[Obsolete("This type is obsolete and will be removed in a future version.")]
|
|
||||||
public static class CultureInfoCache
|
|
||||||
{
|
|
||||||
private static readonly ConcurrentDictionary<string, CacheEntry> _cache = new ConcurrentDictionary<string, CacheEntry>();
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets a read-only cached <see cref="CultureInfo"/> for the specified name. Only names that exist in
|
|
||||||
/// <paramref name="supportedCultures"/> will be used.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="name">The culture name.</param>
|
|
||||||
/// <param name="supportedCultures">The cultures supported by the application.</param>
|
|
||||||
/// <returns>
|
|
||||||
/// A read-only cached <see cref="CultureInfo"/> or <c>null</c> if a match wasn't found in
|
|
||||||
/// <paramref name="supportedCultures"/>.
|
|
||||||
/// </returns>
|
|
||||||
public static CultureInfo GetCultureInfo(string name, IList<CultureInfo> supportedCultures)
|
|
||||||
{
|
|
||||||
// Allow only known culture names as this API is called with input from users (HTTP requests) and
|
|
||||||
// creating CultureInfo objects is expensive and we don't want it to throw either.
|
|
||||||
if (name == null || supportedCultures == null ||
|
|
||||||
!supportedCultures.Any(supportedCulture => string.Equals(supportedCulture.Name, name, StringComparison.OrdinalIgnoreCase)))
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
var entry = _cache.GetOrAdd(name, n =>
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return new CacheEntry(CultureInfo.ReadOnly(new CultureInfo(n)));
|
|
||||||
}
|
|
||||||
catch (CultureNotFoundException)
|
|
||||||
{
|
|
||||||
// This can still throw as the list of culture names we have is generated from latest .NET Framework
|
|
||||||
// on latest Windows and thus contains names that won't be supported on lower framework or OS versions.
|
|
||||||
// We can just cache the null result in these cases as it's ultimately bound by the list anyway.
|
|
||||||
return new CacheEntry(cultureInfo: null);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return entry.CultureInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
private class CacheEntry
|
|
||||||
{
|
|
||||||
public CacheEntry(CultureInfo cultureInfo)
|
|
||||||
{
|
|
||||||
CultureInfo = cultureInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
public CultureInfo CultureInfo { get; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
|
||||||
|
|
||||||
<Import Project="..\..\build\common.props" />
|
|
||||||
|
|
||||||
<PropertyGroup>
|
|
||||||
<Product>Microsoft .NET Extensions</Product>
|
|
||||||
<Description>Provides cached instances of CultureInfo using a generated list of known culture names for use in scenarios where unbounded CultureInfo creation is undesirable.</Description>
|
|
||||||
<TargetFramework>netstandard1.1</TargetFramework>
|
|
||||||
<NoWarn>$(NoWarn);CS1591</NoWarn>
|
|
||||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
|
||||||
<PackageTags>globalization;localization</PackageTags>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
</Project>
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
{
|
|
||||||
"AssemblyIdentity": "Microsoft.Extensions.Globalization.CultureInfoCache, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60",
|
|
||||||
"Types": [
|
|
||||||
{
|
|
||||||
"Name": "Microsoft.Extensions.Globalization.CultureInfoCache",
|
|
||||||
"Visibility": "Public",
|
|
||||||
"Kind": "Class",
|
|
||||||
"Abstract": true,
|
|
||||||
"Static": true,
|
|
||||||
"Sealed": true,
|
|
||||||
"ImplementedInterfaces": [],
|
|
||||||
"Members": [
|
|
||||||
{
|
|
||||||
"Kind": "Method",
|
|
||||||
"Name": "GetCultureInfo",
|
|
||||||
"Parameters": [
|
|
||||||
{
|
|
||||||
"Name": "name",
|
|
||||||
"Type": "System.String"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Name": "supportedCultures",
|
|
||||||
"Type": "System.Collections.Generic.IList<System.Globalization.CultureInfo>"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"ReturnType": "System.Globalization.CultureInfo",
|
|
||||||
"Static": true,
|
|
||||||
"Visibility": "Public",
|
|
||||||
"GenericParameter": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"GenericParameters": []
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue