mirror of
https://github.com/JKorf/CryptoExchange.Net
synced 2025-06-07 07:56:12 +00:00
Made Deserialize available in implementations, Added optional object check for deserializing
This commit is contained in:
parent
6baf1f48f4
commit
27fb92f999
@ -7,7 +7,7 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<PackageId>CryptoExchange.Net</PackageId>
|
<PackageId>CryptoExchange.Net</PackageId>
|
||||||
<Authors>JKorf</Authors>
|
<Authors>JKorf</Authors>
|
||||||
<PackageVersion>0.0.5</PackageVersion>
|
<PackageVersion>0.0.6</PackageVersion>
|
||||||
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
|
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
|
||||||
<PackageProjectUrl>https://github.com/JKorf/CryptoExchange.Net</PackageProjectUrl>
|
<PackageProjectUrl>https://github.com/JKorf/CryptoExchange.Net</PackageProjectUrl>
|
||||||
<PackageLicenseUrl>https://github.com/JKorf/CryptoExchange.Net/blob/master/LICENSE</PackageLicenseUrl>
|
<PackageLicenseUrl>https://github.com/JKorf/CryptoExchange.Net/blob/master/LICENSE</PackageLicenseUrl>
|
||||||
|
@ -173,12 +173,12 @@ namespace CryptoExchange.Net
|
|||||||
return new ServerError(error);
|
return new ServerError(error);
|
||||||
}
|
}
|
||||||
|
|
||||||
private CallResult<T> Deserialize<T>(string data) where T: class
|
protected CallResult<T> Deserialize<T>(string data, bool checkObject = true) where T: class
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var obj = JToken.Parse(data);
|
var obj = JToken.Parse(data);
|
||||||
if (log.Level == LogVerbosity.Debug)
|
if (checkObject && log.Level == LogVerbosity.Debug)
|
||||||
{
|
{
|
||||||
if (obj is JObject o)
|
if (obj is JObject o)
|
||||||
CheckObject(typeof(T), o);
|
CheckObject(typeof(T), o);
|
||||||
@ -208,6 +208,7 @@ namespace CryptoExchange.Net
|
|||||||
|
|
||||||
private void CheckObject(Type type, JObject obj)
|
private void CheckObject(Type type, JObject obj)
|
||||||
{
|
{
|
||||||
|
bool isDif = false;
|
||||||
var properties = new List<string>();
|
var properties = new List<string>();
|
||||||
var props = type.GetProperties();
|
var props = type.GetProperties();
|
||||||
foreach (var prop in props)
|
foreach (var prop in props)
|
||||||
@ -225,9 +226,10 @@ namespace CryptoExchange.Net
|
|||||||
if (d == null)
|
if (d == null)
|
||||||
{
|
{
|
||||||
d = properties.SingleOrDefault(p => p.ToLower() == token.Key.ToLower());
|
d = properties.SingleOrDefault(p => p.ToLower() == token.Key.ToLower());
|
||||||
if (d == null)
|
if (d == null && !(type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Dictionary<,>)))
|
||||||
{
|
{
|
||||||
log.Write(LogVerbosity.Warning, $"Didn't find property `{token.Key}` in object of type `{type.Name}`");
|
log.Write(LogVerbosity.Warning, $"Didn't find property `{token.Key}` in object of type `{type.Name}`");
|
||||||
|
isDif = true;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -245,8 +247,14 @@ namespace CryptoExchange.Net
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach(var prop in properties)
|
foreach (var prop in properties)
|
||||||
|
{
|
||||||
|
isDif = true;
|
||||||
log.Write(LogVerbosity.Warning, $"Didn't find key `{prop}` in returned data object of type `{type.Name}`");
|
log.Write(LogVerbosity.Warning, $"Didn't find key `{prop}` in returned data object of type `{type.Name}`");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isDif)
|
||||||
|
log.Write(LogVerbosity.Debug, "Returned data: " + obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
private PropertyInfo GetProperty(string name, PropertyInfo[] props)
|
private PropertyInfo GetProperty(string name, PropertyInfo[] props)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user