From 93e4722a815a64c6bf7b95c764258265fdd12e7b Mon Sep 17 00:00:00 2001 From: JKorf Date: Thu, 8 Aug 2024 09:20:26 +0200 Subject: [PATCH] Added testing checks for JsonInclude attribute for internal properties --- .../Testing/Comparers/SystemTextJsonComparer.cs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/CryptoExchange.Net/Testing/Comparers/SystemTextJsonComparer.cs b/CryptoExchange.Net/Testing/Comparers/SystemTextJsonComparer.cs index c3565d6..bdc29b1 100644 --- a/CryptoExchange.Net/Testing/Comparers/SystemTextJsonComparer.cs +++ b/CryptoExchange.Net/Testing/Comparers/SystemTextJsonComparer.cs @@ -151,13 +151,22 @@ namespace CryptoExchange.Net.Testing.Comparers private static void CheckObject(string method, JProperty prop, object obj, List? ignoreProperties) { - var resultProperties = obj.GetType().GetProperties( + var publicProperties = obj.GetType().GetProperties( System.Reflection.BindingFlags.Public - | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.GetProperty | System.Reflection.BindingFlags.SetProperty | System.Reflection.BindingFlags.Instance).Select(p => (p, ((JsonPropertyNameAttribute?)p.GetCustomAttributes(typeof(JsonPropertyNameAttribute), true).SingleOrDefault())?.Name)); + var internalProperties = obj.GetType().GetProperties( + System.Reflection.BindingFlags.NonPublic + | System.Reflection.BindingFlags.GetProperty + | System.Reflection.BindingFlags.SetProperty + | System.Reflection.BindingFlags.Instance) + .Where(p => p.CustomAttributes.Any(x => x.AttributeType == typeof(JsonIncludeAttribute))) + .Select(p => (p, ((JsonPropertyNameAttribute?)p.GetCustomAttributes(typeof(JsonPropertyNameAttribute), true).SingleOrDefault())?.Name)); + + var resultProperties = publicProperties.Concat(internalProperties); + // Property has a value var property = resultProperties.SingleOrDefault(p => p.Name == prop.Name).p; property ??= resultProperties.SingleOrDefault(p => p.p.Name == prop.Name).p;