akkadotnet / akkadotnet/Hyperion
Can't deserialize ISerializable
- Dominant language
- C#
- Stars
- 281
- Forks
- 62
- PR merge metrics
- No merged PRs in 30d
Description
NullReferenceExcetions throws on ISerializable deserialization
```C#
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);
}
}
```
```C#
var expected = new Person("Scott", "Hanselman");
Serialize(expected);
Reset();
var actual = Deserialize();
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.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
```
Contributor guide
Research direction
Start with Hyperion.SerializerFactories.ISerializableSerializerFactory.BuildSerializer and reproduce the failure through ISerializableTests.cs, especially CanSerializeClassesWithISerializable. Compare the serialized Person values with the deserialization path and use the existing test to verify that FirstName and LastName round-trip without a NullReferenceException.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 45/100