@@ -31,9 +31,7 @@ public partial class DevToolsClient : IDevToolsMessageObserver, IDevToolsClient
31
31
private bool devToolsAttached ;
32
32
private SynchronizationContext syncContext ;
33
33
34
- /// <summary>
35
- /// DevToolsEvent
36
- /// </summary>
34
+ /// <inheritdoc/>
37
35
public event EventHandler < DevToolsEventArgs > DevToolsEvent ;
38
36
39
37
/// <summary>
@@ -153,6 +151,7 @@ public async Task<DevToolsMethodResponse> ExecuteDevToolsMethodAsync(string meth
153
151
return await taskCompletionSource . Task ;
154
152
}
155
153
154
+ /// <inheritdoc/>
156
155
void IDisposable . Dispose ( )
157
156
{
158
157
DevToolsEvent = null ;
@@ -161,16 +160,19 @@ void IDisposable.Dispose()
161
160
browser = null ;
162
161
}
163
162
163
+ /// <inheritdoc/>
164
164
void IDevToolsMessageObserver . OnDevToolsAgentAttached ( IBrowser browser )
165
165
{
166
166
devToolsAttached = true ;
167
167
}
168
168
169
+ /// <inheritdoc/>
169
170
void IDevToolsMessageObserver . OnDevToolsAgentDetached ( IBrowser browser )
170
171
{
171
172
devToolsAttached = false ;
172
173
}
173
174
175
+ /// <inheritdoc/>
174
176
void IDevToolsMessageObserver . OnDevToolsEvent ( IBrowser browser , string method , Stream parameters )
175
177
{
176
178
var evt = DevToolsEvent ;
@@ -188,11 +190,13 @@ void IDevToolsMessageObserver.OnDevToolsEvent(IBrowser browser, string method, S
188
190
}
189
191
}
190
192
193
+ /// <inheritdoc/>
191
194
bool IDevToolsMessageObserver . OnDevToolsMessage ( IBrowser browser , Stream message )
192
195
{
193
196
return false ;
194
197
}
195
198
199
+ /// <inheritdoc/>
196
200
void IDevToolsMessageObserver . OnDevToolsMethodResult ( IBrowser browser , int messageId , bool success , Stream result )
197
201
{
198
202
var uiThread = CefThread . CurrentlyOnUiThread ;
@@ -248,5 +252,38 @@ void IDevToolsMessageObserver.OnDevToolsMethodResult(IBrowser browser, int messa
248
252
}
249
253
}
250
254
}
255
+
256
+ /// <summary>
257
+ /// Deserialize the JSON string into a .Net object.
258
+ /// For .Net Core/.Net 5.0 uses System.Text.Json
259
+ /// for .Net 4.5.2 uses System.Runtime.Serialization.Json
260
+ /// </summary>
261
+ /// <typeparam name="T">Object type</typeparam>
262
+ /// <param name="json">JSON</param>
263
+ /// <returns>object of type <typeparamref name="T"/></returns>
264
+ public static T DeserializeJson < T > ( string json )
265
+ {
266
+ #if NETCOREAPP
267
+ var options = new System . Text . Json . JsonSerializerOptions
268
+ {
269
+ PropertyNameCaseInsensitive = true ,
270
+ IgnoreNullValues = true ,
271
+ } ;
272
+
273
+ options . Converters . Add ( new CefSharp . Internals . Json . JsonEnumConverterFactory ( ) ) ;
274
+
275
+ return System . Text . Json . JsonSerializer . Deserialize < T > ( json , options ) ;
276
+ #else
277
+ var bytes = Encoding . UTF8 . GetBytes ( json ) ;
278
+ using ( var ms = new MemoryStream ( bytes ) )
279
+ {
280
+ var settings = new System . Runtime . Serialization . Json . DataContractJsonSerializerSettings ( ) ;
281
+ settings . UseSimpleDictionaryFormat = true ;
282
+
283
+ var dcs = new System . Runtime . Serialization . Json . DataContractJsonSerializer ( typeof ( T ) , settings ) ;
284
+ return ( T ) dcs . ReadObject ( ms ) ;
285
+ }
286
+ #endif
287
+ }
251
288
}
252
289
}
0 commit comments