@@ -24,8 +24,12 @@ public class UseCultureAttribute : BeforeAfterTestAttribute
2424 {
2525 private readonly Lazy < CultureInfo > _culture ;
2626 private readonly Lazy < CultureInfo > _uiCulture ;
27+ private readonly Lazy < CultureInfo > _defaultThreadCulture ;
28+ private readonly Lazy < CultureInfo > _defaultThreadUICulture ;
2729 private CultureInfo _originalCulture ;
2830 private CultureInfo _originalUICulture ;
31+ private CultureInfo _originalDefaultThreadCulture ;
32+ private CultureInfo _originalDefaultThreadUICulture ;
2933
3034 /// <summary>
3135 /// Replaces the culture and UI culture of the current thread with
@@ -51,6 +55,8 @@ public UseCultureAttribute(string culture)
5155 /// <param name="uiCulture">The name of the UI culture.</param>
5256 public UseCultureAttribute ( string culture , string uiCulture )
5357 {
58+ _defaultThreadCulture = new Lazy < CultureInfo > ( ( ) => CultureInfo . DefaultThreadCurrentCulture ) ;
59+ _defaultThreadUICulture = new Lazy < CultureInfo > ( ( ) => CultureInfo . DefaultThreadCurrentUICulture ) ;
5460#if NET46 || NET461
5561 _culture = new Lazy < CultureInfo > ( ( ) => new CultureInfo ( culture , useUserOverride : false ) ) ;
5662 _uiCulture = new Lazy < CultureInfo > ( ( ) => new CultureInfo ( uiCulture , useUserOverride : false ) ) ;
@@ -73,6 +79,9 @@ public UseCultureAttribute(string culture, string uiCulture)
7379 /// </summary>
7480 public CultureInfo UICulture => _uiCulture . Value ;
7581
82+ public CultureInfo DefaultThreadCulture => _defaultThreadCulture . Value ;
83+ public CultureInfo DefaultThreadUICulture => _defaultThreadUICulture . Value ;
84+
7685 /// <summary>
7786 /// Stores the current <see cref="CultureInfo.CurrentCulture" /> and <see cref="CultureInfo.CurrentUICulture" />
7887 /// and replaces them with the new cultures defined in the constructor.
@@ -82,6 +91,10 @@ public override void Before(MethodInfo methodUnderTest)
8291 {
8392 _originalCulture = CultureInfo . CurrentCulture ;
8493 _originalUICulture = CultureInfo . CurrentUICulture ;
94+ _originalDefaultThreadCulture = CultureInfo . DefaultThreadCurrentCulture ;
95+ _originalDefaultThreadUICulture = CultureInfo . DefaultThreadCurrentUICulture ;
96+ CultureInfo . DefaultThreadCurrentCulture = Culture ;
97+ CultureInfo . DefaultThreadCurrentUICulture = Culture ;
8598
8699#if NET46 || NET461 || NETCOREAPP2_0
87100 CultureInfo . CurrentCulture = Culture ;
@@ -91,8 +104,6 @@ public override void Before(MethodInfo methodUnderTest)
91104 CultureInfo . CurrentCulture . ClearCachedData ( ) ;
92105 CultureInfo . CurrentUICulture . ClearCachedData ( ) ;
93106#endif
94- #else
95- throw new NotSupportedException ( "Cannot set the current culture on this framework target." ) ;
96107#endif
97108 }
98109
@@ -103,6 +114,8 @@ public override void Before(MethodInfo methodUnderTest)
103114 /// <param name="methodUnderTest">The method under test</param>
104115 public override void After ( MethodInfo methodUnderTest )
105116 {
117+ CultureInfo . DefaultThreadCurrentCulture = _originalDefaultThreadCulture ;
118+ CultureInfo . DefaultThreadCurrentUICulture = _originalDefaultThreadUICulture ;
106119#if NET46 || NET461 || NETCOREAPP2_0
107120 CultureInfo . CurrentCulture = _originalCulture ;
108121 CultureInfo . CurrentUICulture = _originalUICulture ;
@@ -111,8 +124,6 @@ public override void After(MethodInfo methodUnderTest)
111124 CultureInfo . CurrentCulture . ClearCachedData ( ) ;
112125 CultureInfo . CurrentUICulture . ClearCachedData ( ) ;
113126#endif
114- #else
115- throw new NotSupportedException ( "Cannot set the current culture on this framework target." ) ;
116127#endif
117128 }
118129 }
0 commit comments