1
0
mirror of https://github.com/JKorf/CryptoExchange.Net synced 2025-06-07 16:06:15 +00:00

Made Deserialize available in implementations, Added optional object check for deserializing

This commit is contained in:
JKorf 2018-03-07 09:55:11 +01:00
parent 6baf1f48f4
commit 27fb92f999
2 changed files with 13 additions and 5 deletions

View File

@ -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>

View File

@ -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;
} }
} }
@ -246,9 +248,15 @@ 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)
{ {
foreach (var prop in props) foreach (var prop in props)