浏览代码

Fix for ExludeIfEquals with ulong

Brad Robinson 2 年之前
父节点
当前提交
2410c2b187
共有 2 个文件被更改,包括 12 次插入1 次删除
  1. 8 0
      Topten.JsonKit.Test/TestExcludeIfEquals.cs
  2. 4 1
      Topten.JsonKit/Emit.cs

+ 8 - 0
Topten.JsonKit.Test/TestExcludeIfEquals.cs

@@ -37,6 +37,10 @@ namespace TestCases
 
             [Json("enumProperty", ExcludeIfEquals = Fruit.Apples)]
             public Fruit enumProperty { get; set; }
+
+            [Json("ulongProperty", ExcludeIfEquals = 0UL)]
+            public ulong ulongProperty { get; set; }
+
         }
 
         public static object GetDefault(Type type)
@@ -57,6 +61,7 @@ namespace TestCases
                 intField = 0,
                 boolProperty = false,
                 intProperty = 0,
+                ulongProperty = 0,
                 enumField = Fruit.Apples,
                 enumProperty = Fruit.Apples,
             };
@@ -70,6 +75,7 @@ namespace TestCases
             Assert.DoesNotContain("\"boolProperty\":", json);
             Assert.DoesNotContain("\"intProperty\":", json);
             Assert.DoesNotContain("\"enumField\":", json);
+            Assert.DoesNotContain("\"ulongProperty\":", json);
             Assert.DoesNotContain("\"enumProperty\":", json);
         }
 
@@ -82,6 +88,7 @@ namespace TestCases
                 intField = 23,
                 boolProperty = true,
                 intProperty = 24,
+                ulongProperty = 25,
                 enumField = Fruit.Pears,
                 enumProperty = Fruit.Bananas,
             };
@@ -96,6 +103,7 @@ namespace TestCases
             Assert.Contains("\"intProperty\":", json);
             Assert.Contains("\"enumField\":", json);
             Assert.Contains("\"enumProperty\":", json);
+            Assert.Contains("\"ulongProperty\":", json);
             Assert.Contains("true", json);
             Assert.Contains("23", json);
             Assert.Contains("24", json);

+ 4 - 1
Topten.JsonKit/Emit.cs

@@ -343,10 +343,13 @@ namespace Topten.JsonKit
                     break;
 
                 case TypeCode.Int64:
-                case TypeCode.UInt64:
                     il.Emit(OpCodes.Ldc_I8, (long)value);
                     break;
 
+                case TypeCode.UInt64:
+                    il.Emit(OpCodes.Ldc_I8, (long)(ulong)value);
+                    break;
+
                 case TypeCode.Single:
                     il.Emit(OpCodes.Ldc_R4, (float)value);
                     break;