@@ -84,24 +84,7 @@ public object this[string key]
8484
8585 private object Get ( string key )
8686 {
87- object JTokenToObject ( JToken source )
88- {
89- switch ( source . Type )
90- {
91- case JTokenType . Object :
92- return ( ( JObject ) source ) . Properties ( )
93- . ToDictionary ( prop => prop . Name , prop => JTokenToObject ( prop . Value ) ) ;
94- case JTokenType . Array :
95- return source . Values ( ) . Select ( JTokenToObject ) . ToList ( ) ;
96- default :
97- return source . ToObject < object > ( ) ;
98- }
99- }
100-
101- if ( _data . TryGetValue ( key , out JToken token ) )
102- {
103- return JTokenToObject ( token ) ;
104- }
87+ if ( TryGetValue ( key , out object result ) ) return result ;
10588
10689 throw new KeyNotFoundException ( $ "Key { key } was not found.") ;
10790 }
@@ -123,5 +106,31 @@ private void Set(string key, object value)
123106
124107 _data . Add ( key , token ) ;
125108 }
109+
110+ public bool TryGetValue ( string key , out object value )
111+ {
112+ object JTokenToObject ( JToken source )
113+ {
114+ switch ( source . Type )
115+ {
116+ case JTokenType . Object :
117+ return ( ( JObject ) source ) . Properties ( )
118+ . ToDictionary ( prop => prop . Name , prop => JTokenToObject ( prop . Value ) ) ;
119+ case JTokenType . Array :
120+ return source . Values ( ) . Select ( JTokenToObject ) . ToList ( ) ;
121+ default :
122+ return source . ToObject < object > ( ) ;
123+ }
124+ }
125+
126+ if ( _data . TryGetValue ( key , out JToken token ) )
127+ {
128+ value = JTokenToObject ( token ) ;
129+ return true ;
130+ }
131+
132+ value = null ;
133+ return false ;
134+ }
126135 }
127136}
0 commit comments