Hyperion
Hyperion copied to clipboard
Can't deserialize ISerializable
NullReferenceExcetions throws on ISerializable deserialization
public class Person : ISerializable
{
public Person(string firstName, string lastName)
{
FirstName = firstName;
LastName = lastName;
}
public string FirstName { get; set; }
public string LastName { get; set; }
public void GetObjectData(SerializationInfo info, StreamingContext streamingContext)
{
info.AddValue("FirstName", FirstName);
info.AddValue("LastName", LastName);
}
}
var expected = new Person("Scott", "Hanselman");
Serialize(expected);
Reset();
var actual = Deserialize<Person>();
Assert.Equal(expected.FirstName, actual.FirstName);
Assert.Equal(expected.LastName, actual.LastName);
Error Message:
System.NullReferenceException : Object reference not set to an instance of an object.
Stack Trace:
at Hyperion.SerializerFactories.ISerializableSerializerFactory.<>c__DisplayClass2_0.<BuildSerializer>b__0(Stream stream, DeserializerSession session)
at Hyperion.ValueSerializers.ObjectSerializer.ReadValue(Stream stream, DeserializerSession session)
at Hyperion.Serializer.Deserialize[T](Stream stream)
at Hyperion.Tests.TestBase.Deserialize[T]() in C:\Projects\Hyperion\Hyperion.Tests\TestBase.cs:line 44
at Hyperion.Tests.ISerializableTests.CanSerializeClassesWithISerializable() in C:\Projects\Hyperion\Hyperion.Tests\ISerializableTests.cs:line 78
https://github.com/akkadotnet/Hyperion/blob/dev/Hyperion/SerializerFactories/ISerializableSerializerFactory.cs#L47 It should not throw, if can't find a constructor