diff --git a/src/Microsoft.AspNet.Localization/AcceptLanguageHeaderRequestCultureStrategy.cs b/src/Microsoft.AspNet.Localization/AcceptLanguageHeaderRequestCultureStrategy.cs
index 12d62ead83..dbc9883cd1 100644
--- a/src/Microsoft.AspNet.Localization/AcceptLanguageHeaderRequestCultureStrategy.cs
+++ b/src/Microsoft.AspNet.Localization/AcceptLanguageHeaderRequestCultureStrategy.cs
@@ -15,7 +15,7 @@ namespace Microsoft.AspNet.Localization
public class AcceptLanguageHeaderRequestCultureStrategy : RequestCultureStrategy
{
///
- /// The maximum number of values in the Accept-Language header to attempt to create a
+ /// The maximum number of values in the Accept-Language header to attempt to create a
/// from for the current request.
/// Defaults to 3.
///
@@ -52,7 +52,7 @@ namespace Microsoft.AspNet.Localization
var culture = CultureInfoCache.GetCultureInfo(language.Value);
if (culture != null)
{
- var requestCulture = RequestCulture.GetRequestCulture(culture);
+ var requestCulture = new RequestCulture(culture);
requestCulture = ValidateRequestCulture(requestCulture);
diff --git a/src/Microsoft.AspNet.Localization/CookieRequestCultureStrategy.cs b/src/Microsoft.AspNet.Localization/CookieRequestCultureStrategy.cs
index ead04c8320..97c70d82ed 100644
--- a/src/Microsoft.AspNet.Localization/CookieRequestCultureStrategy.cs
+++ b/src/Microsoft.AspNet.Localization/CookieRequestCultureStrategy.cs
@@ -98,7 +98,7 @@ namespace Microsoft.AspNet.Localization
return null;
}
- return RequestCulture.GetRequestCulture(culture, uiCulture);
+ return new RequestCulture(culture, uiCulture);
}
}
}
diff --git a/src/Microsoft.AspNet.Localization/QueryStringRequestCultureStrategy.cs b/src/Microsoft.AspNet.Localization/QueryStringRequestCultureStrategy.cs
index 19c3c077b6..64a5a3b520 100644
--- a/src/Microsoft.AspNet.Localization/QueryStringRequestCultureStrategy.cs
+++ b/src/Microsoft.AspNet.Localization/QueryStringRequestCultureStrategy.cs
@@ -67,7 +67,7 @@ namespace Microsoft.AspNet.Localization
return null;
}
- var requestCulture = RequestCulture.GetRequestCulture(culture, uiCulture);
+ var requestCulture = new RequestCulture(culture, uiCulture);
requestCulture = ValidateRequestCulture(requestCulture);
diff --git a/src/Microsoft.AspNet.Localization/RequestCulture.cs b/src/Microsoft.AspNet.Localization/RequestCulture.cs
index 9f0e2754db..ec109e6d8e 100644
--- a/src/Microsoft.AspNet.Localization/RequestCulture.cs
+++ b/src/Microsoft.AspNet.Localization/RequestCulture.cs
@@ -1,7 +1,6 @@
// 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.Collections.Concurrent;
using System.Globalization;
using Microsoft.Framework.Internal;
@@ -12,15 +11,24 @@ namespace Microsoft.AspNet.Localization
///
public class RequestCulture
{
- private static readonly ConcurrentDictionary _cache = new ConcurrentDictionary();
-
- private RequestCulture([NotNull] CultureInfo culture)
+ ///
+ /// Creates a new object has its and
+ /// properties set to the same value.
+ ///
+ /// The for the request.
+ public RequestCulture([NotNull] CultureInfo culture)
: this (culture, culture)
{
}
- private RequestCulture([NotNull] CultureInfo culture, [NotNull] CultureInfo uiCulture)
+ ///
+ /// Creates a new object has its and
+ /// properties set to the respective values provided.
+ ///
+ /// The for the request to be used for formatting.
+ /// The for the request to be used for text, i.e. language.
+ public RequestCulture([NotNull] CultureInfo culture, [NotNull] CultureInfo uiCulture)
{
Culture = culture;
UICulture = uiCulture;
@@ -35,66 +43,5 @@ namespace Microsoft.AspNet.Localization
/// Gets the for the request to be used for text, i.e. language;
///
public CultureInfo UICulture { get; }
-
- ///
- /// Gets a cached instance that has its and
- /// properties set to the same value.
- ///
- /// The for the request.
- public static RequestCulture GetRequestCulture([NotNull] CultureInfo culture)
- {
- return GetRequestCulture(culture, culture);
- }
-
- ///
- /// Gets a cached instance that has its and
- /// properties set to the respective values provided.
- ///
- /// The for the request to be used for formatting.
- /// The for the request to be used for text, i.e. language.
- ///
- public static RequestCulture GetRequestCulture([NotNull] CultureInfo culture, [NotNull] CultureInfo uiCulture)
- {
- var key = new CacheKey(culture, uiCulture);
- return _cache.GetOrAdd(key, k => new RequestCulture(culture, uiCulture));
- }
-
- private class CacheKey
- {
- private readonly int _hashCode;
-
- public CacheKey(CultureInfo culture, CultureInfo uiCulture)
- {
- Culture = culture;
- UICulture = uiCulture;
- _hashCode = new { Culture, UICulture }.GetHashCode();
- }
-
- public CultureInfo Culture { get; }
-
- public CultureInfo UICulture { get; }
-
- public bool Equals(CacheKey other)
- {
- return Culture == other.Culture && UICulture == other.UICulture;
- }
-
- public override bool Equals(object obj)
- {
- var other = obj as CacheKey;
-
- if (other != null)
- {
- return Equals(other);
- }
-
- return base.Equals(obj);
- }
-
- public override int GetHashCode()
- {
- return _hashCode;
- }
- }
}
}
diff --git a/src/Microsoft.AspNet.Localization/RequestCultureStrategy.cs b/src/Microsoft.AspNet.Localization/RequestCultureStrategy.cs
index 422f5d6f9e..17afbcd397 100644
--- a/src/Microsoft.AspNet.Localization/RequestCultureStrategy.cs
+++ b/src/Microsoft.AspNet.Localization/RequestCultureStrategy.cs
@@ -41,12 +41,12 @@ namespace Microsoft.AspNet.Localization
if (Options.SupportedCultures != null && !Options.SupportedCultures.Contains(result.Culture))
{
- result = RequestCulture.GetRequestCulture(Options.DefaultRequestCulture.Culture, result.UICulture);
+ result = new RequestCulture(Options.DefaultRequestCulture.Culture, result.UICulture);
}
if (Options.SupportedUICultures != null && !Options.SupportedUICultures.Contains(result.UICulture))
{
- result = RequestCulture.GetRequestCulture(result.Culture, Options.DefaultRequestCulture.UICulture);
+ result = new RequestCulture(result.Culture, Options.DefaultRequestCulture.UICulture);
}
if (requestCulture.Culture != result.Culture && requestCulture.UICulture != result.UICulture)
diff --git a/src/Microsoft.AspNet.Localization/RequestLocalizationMiddleware.cs b/src/Microsoft.AspNet.Localization/RequestLocalizationMiddleware.cs
index 2ccfe10418..c640fcbb8f 100644
--- a/src/Microsoft.AspNet.Localization/RequestLocalizationMiddleware.cs
+++ b/src/Microsoft.AspNet.Localization/RequestLocalizationMiddleware.cs
@@ -38,7 +38,7 @@ namespace Microsoft.AspNet.Localization
public async Task Invoke([NotNull] HttpContext context)
{
var requestCulture = _options.DefaultRequestCulture ??
- RequestCulture.GetRequestCulture(CultureInfo.CurrentCulture, CultureInfo.CurrentUICulture);
+ new RequestCulture(CultureInfo.CurrentCulture, CultureInfo.CurrentUICulture);
IRequestCultureStrategy winningStrategy = null;
diff --git a/src/Microsoft.AspNet.Localization/RequestLocalizationOptions.cs b/src/Microsoft.AspNet.Localization/RequestLocalizationOptions.cs
index 5279c98d8e..74eb335921 100644
--- a/src/Microsoft.AspNet.Localization/RequestLocalizationOptions.cs
+++ b/src/Microsoft.AspNet.Localization/RequestLocalizationOptions.cs
@@ -17,7 +17,7 @@ namespace Microsoft.AspNet.Localization
///
public RequestLocalizationOptions()
{
- DefaultRequestCulture = RequestCulture.GetRequestCulture(CultureInfo.CurrentCulture, CultureInfo.CurrentUICulture);
+ DefaultRequestCulture = new RequestCulture(CultureInfo.CurrentCulture, CultureInfo.CurrentUICulture);
RequestCultureStrategies = new List
{