@@ -20,40 +20,52 @@ public CachingConverterResolver(IRfcConverterResolver decoratedResolver)
2020 public IEnumerable < IToAbapValueConverter < T > > GetToRfcConverters < T > ( RfcType rfcType )
2121 {
2222 var sourceType = typeof ( T ) ;
23- var key = $ "{ rfcType } _{ sourceType } ";
23+ var key = $ "{ rfcType } _{ sourceType . AssemblyQualifiedName } ";
2424
25- if ( ! _toRfcConverters . ContainsKey ( key ) )
25+ if ( ! _toRfcConverters . TryGetValue ( key , out var entry ) )
2626 {
2727 var converters = _decoratedResolver . GetToRfcConverters < T > ( rfcType ) . ToArray ( ) ;
28- _toRfcConverters . Add ( key , converters . Length == 0 ? null : converters ) ;
29-
28+ entry = converters . Length == 0 ? null : converters ;
29+ try
30+ {
31+ _toRfcConverters . Add ( key , entry ) ;
32+ }
33+ catch ( Exception )
34+ {
35+ // ignored
36+ }
3037 }
3138
32- var entry = _toRfcConverters [ key ] ;
33-
3439 if ( entry != null )
3540 return ( IEnumerable < IToAbapValueConverter < T > > ) entry ;
36- return new IToAbapValueConverter < T > [ 0 ] ;
41+ return Array . Empty < IToAbapValueConverter < T > > ( ) ;
3742
3843
3944 }
4045
4146 public IEnumerable < IFromAbapValueConverter < T > > GetFromRfcConverters < T > ( RfcType rfcType , Type abapValueType )
4247 {
4348 var targetType = typeof ( T ) ;
44- var key = $ "{ rfcType } _{ targetType } ";
49+ var key = $ "{ rfcType } _{ targetType . AssemblyQualifiedName } ";
4550
46- if ( ! _fromRfcConverters . ContainsKey ( key ) )
51+ if ( ! _fromRfcConverters . TryGetValue ( key , out var entry ) )
4752 {
4853 var converters = _decoratedResolver . GetFromRfcConverters < T > ( rfcType , abapValueType ) . ToArray ( ) ;
49- _fromRfcConverters . Add ( key , converters . Length == 0 ? null : converters ) ;
54+ entry = converters . Length == 0 ? null : converters ;
55+ try
56+ {
57+ _fromRfcConverters . Add ( key , entry ) ;
58+ }
59+ catch ( Exception )
60+ {
61+ // ignored
62+ }
5063 }
5164
52- var entry = _fromRfcConverters [ key ] ;
53-
5465 if ( entry != null )
5566 return ( IEnumerable < IFromAbapValueConverter < T > > ) entry ;
56- return new IFromAbapValueConverter < T > [ 0 ] ;
67+ return Array . Empty < IFromAbapValueConverter < T > > ( ) ;
5768 }
69+
5870 }
5971}
0 commit comments