Skip to content

Commit 769c967

Browse files
committed
Use Activator.CreateInstance to create default value types
1 parent ef0f731 commit 769c967

File tree

3 files changed

+55
-3
lines changed

3 files changed

+55
-3
lines changed

Saleslogix.SData.Client.Test/Content/ContentHelperTests.cs

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -575,6 +575,58 @@ public void Deserialize_Simple_Types_From_String_Test()
575575
Assert.That(result.UriProp, Is.EqualTo(new Uri("http://1.com")));
576576
}
577577

578+
[Test]
579+
public void Deserialize_Simple_Types_From_Null_Test()
580+
{
581+
var value = new SDataResource
582+
{
583+
{"SByteProp", null},
584+
{"ShortProp", null},
585+
{"IntProp", null},
586+
{"LongProp", null},
587+
{"ByteProp", null},
588+
{"UShortProp", null},
589+
{"UIntProp", null},
590+
{"ULongProp", null},
591+
{"FloatProp", null},
592+
{"DoubleProp", null},
593+
{"BoolProp", null},
594+
{"CharProp", null},
595+
{"DecimalProp", null},
596+
{"DateTimeProp", null},
597+
{"EnumProp", null},
598+
{"StringProp", null},
599+
{"DateTimeOffsetProp", null},
600+
{"GuidProp", null},
601+
{"TimeSpanProp", null},
602+
{"VersionProp", null},
603+
{"UriProp", null},
604+
{"ByteArrayProp", null}
605+
};
606+
var result = ContentHelper.Deserialize<Simple_Types_Object>(value);
607+
Assert.That(result.SByteProp, Is.EqualTo(0));
608+
Assert.That(result.ShortProp, Is.EqualTo(0));
609+
Assert.That(result.IntProp, Is.EqualTo(0));
610+
Assert.That(result.LongProp, Is.EqualTo(0));
611+
Assert.That(result.ByteProp, Is.EqualTo(0));
612+
Assert.That(result.UShortProp, Is.EqualTo(0));
613+
Assert.That(result.UIntProp, Is.EqualTo(0));
614+
Assert.That(result.ULongProp, Is.EqualTo(0));
615+
Assert.That(result.FloatProp, Is.EqualTo(0));
616+
Assert.That(result.DoubleProp, Is.EqualTo(0));
617+
Assert.That(result.BoolProp, Is.False);
618+
Assert.That(result.CharProp, Is.EqualTo('\0'));
619+
Assert.That(result.DecimalProp, Is.EqualTo(0));
620+
Assert.That(result.DateTimeProp, Is.EqualTo(DateTime.MinValue));
621+
Assert.That(result.EnumProp, Is.EqualTo(DayOfWeek.Sunday));
622+
Assert.That(result.StringProp, Is.EqualTo(null));
623+
Assert.That(result.DateTimeOffsetProp, Is.EqualTo(DateTimeOffset.MinValue));
624+
Assert.That(result.GuidProp, Is.EqualTo(Guid.Empty));
625+
Assert.That(result.TimeSpanProp, Is.EqualTo(TimeSpan.Zero));
626+
Assert.That(result.VersionProp, Is.EqualTo(null));
627+
Assert.That(result.UriProp, Is.EqualTo(null));
628+
}
629+
578630
[Test]
579631
public void Serialize_Simple_Types_Test()
580632
{

Saleslogix.SData.Client/Content/ContentHelper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -496,7 +496,7 @@ public override object DeserializeObject(object value, Type type)
496496
if (value == null)
497497
{
498498
return type.GetTypeInfo().IsValueType && !ReflectionUtils.IsNullableType(type)
499-
? ConstructorCache[type]()
499+
? Activator.CreateInstance(type)
500500
: null;
501501
}
502502

Saleslogix.SData.Client/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525
// You can specify all the values or you can default the Build and Revision Numbers
2626
// by using the '*' as shown below:
2727

28-
[assembly: AssemblyVersion("2.0.1.1547")]
29-
[assembly: AssemblyFileVersion("2.0.1.1547")]
28+
[assembly: AssemblyVersion("2.0.1.1548")]
29+
[assembly: AssemblyFileVersion("2.0.1.1548")]
3030
[assembly: NeutralResourcesLanguage("en-US")]
3131
[assembly: AssemblyInformationalVersion("2.0")]
3232
[assembly: InternalsVisibleTo("Saleslogix.SData.Client.Test, PublicKey=" +

0 commit comments

Comments
 (0)