akkadotnet / akkadotnet/Hyperion

Can't deserialize ISerializable

Open
#45 1 comment 0 reactions 0 assignees View on GitHub
bug
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.