@@ -341,6 +341,25 @@ public CultureInfo(String name, bool useUserOverride) {
341
341
this . m_isInherited = ( this . GetType ( ) != typeof ( System . Globalization . CultureInfo ) ) ;
342
342
}
343
343
344
+ private CultureInfo ( CultureData cultureData )
345
+ {
346
+ Contract . Assert ( cultureData != null ) ;
347
+ m_cultureData = cultureData ;
348
+ m_name = cultureData . CultureName ;
349
+ m_isInherited = false ;
350
+ }
351
+
352
+ private static CultureInfo CreateCultureInfoNoThrow ( string name , bool useUserOverride )
353
+ {
354
+ Contract . Assert ( name != null ) ;
355
+ CultureData cultureData = CultureData . GetCultureData ( name , useUserOverride ) ;
356
+ if ( cultureData == null )
357
+ {
358
+ return null ;
359
+ }
360
+
361
+ return new CultureInfo ( cultureData ) ;
362
+ }
344
363
345
364
#if FEATURE_USE_LCID
346
365
public CultureInfo ( int culture ) : this ( culture , true ) {
@@ -926,25 +945,22 @@ public virtual CultureInfo Parent
926
945
927
946
if ( null == m_parent )
928
947
{
929
- try
930
- {
931
- string parentName = this . m_cultureData . SPARENT ;
948
+ string parentName = this . m_cultureData . SPARENT ;
932
949
933
- if ( String . IsNullOrEmpty ( parentName ) )
950
+ if ( String . IsNullOrEmpty ( parentName ) )
951
+ {
952
+ m_parent = InvariantCulture ;
953
+ }
954
+ else
955
+ {
956
+ m_parent = CreateCultureInfoNoThrow ( parentName , m_cultureData . UseUserOverride ) ;
957
+ if ( m_parent == null )
934
958
{
959
+ // For whatever reason our IPARENT or SPARENT wasn't correct, so use invariant
960
+ // We can't allow ourselves to fail. In case of custom cultures the parent of the
961
+ // current custom culture isn't installed.
935
962
m_parent = InvariantCulture ;
936
963
}
937
- else
938
- {
939
- m_parent = new CultureInfo ( parentName , this . m_cultureData . UseUserOverride ) ;
940
- }
941
- }
942
- catch ( ArgumentException )
943
- {
944
- // For whatever reason our IPARENT or SPARENT wasn't correct, so use invariant
945
- // We can't allow ourselves to fail. In case of custom cultures the parent of the
946
- // current custom culture isn't installed.
947
- m_parent = InvariantCulture ;
948
964
}
949
965
}
950
966
return m_parent ;
0 commit comments