From b0ffaf149282717b7c0cc49a43f83306884c00e1 Mon Sep 17 00:00:00 2001 From: Vladimir Pecanac Date: Mon, 14 Sep 2026 16:06:03 +0200 Subject: [PATCH] MemoryStream in C#: retarget net10.0, xunit 2.9.3, Person record, Assert.Equal Retarget both projects from net7.0 to net10.0. Test packages: Microsoft.NET.Test.Sdk 16.11.0 to 18.10.0, xunit 2.4.1 to 2.9.3, xunit.runner.visualstudio 2.4.3 to 4.0.0, coverlet.collector 3.1.0 to 10.0.1. Person becomes a positional record, which removes the two CS8618 warnings on its non-nullable string properties. DeserializeObject constructs it positionally, and C# evaluates arguments left to right, which is the order BinaryReader needs. Seven Assert.True calls in MethodsTests become Assert.Equal, clearing the xUnit2010 warnings the 2.9.3 analyzer raises. Build: 0 warnings, 0 errors. Tests: 10 of 10 passing on SDK 10.0.302, runtime 10.0.10. The console app output is unchanged. --- .../MemoryStreamInCsharp.csproj | 2 +- .../MemoryStreamInCsharp/Methods.cs | 11 ++-------- .../MemoryStreamInCsharp/Person.cs | 7 +------ .../MemoryStreamInCsharp/Program.cs | 7 +------ .../Tests/Tests/MethodsTests.cs | 21 +++++++------------ .../Tests/Tests/Tests.csproj | 10 ++++----- 6 files changed, 18 insertions(+), 40 deletions(-) diff --git a/csharp-intermediate-topics/MemoryStreamInCsharp/MemoryStreamInCsharp/MemoryStreamInCsharp.csproj b/csharp-intermediate-topics/MemoryStreamInCsharp/MemoryStreamInCsharp/MemoryStreamInCsharp.csproj index c68a806bf2..3c55c1adf3 100644 --- a/csharp-intermediate-topics/MemoryStreamInCsharp/MemoryStreamInCsharp/MemoryStreamInCsharp.csproj +++ b/csharp-intermediate-topics/MemoryStreamInCsharp/MemoryStreamInCsharp/MemoryStreamInCsharp.csproj @@ -2,7 +2,7 @@ Exe - net7.0 + net10.0 enable enable diff --git a/csharp-intermediate-topics/MemoryStreamInCsharp/MemoryStreamInCsharp/Methods.cs b/csharp-intermediate-topics/MemoryStreamInCsharp/MemoryStreamInCsharp/Methods.cs index 7782c4e45a..ccc5f4c98b 100644 --- a/csharp-intermediate-topics/MemoryStreamInCsharp/MemoryStreamInCsharp/Methods.cs +++ b/csharp-intermediate-topics/MemoryStreamInCsharp/MemoryStreamInCsharp/Methods.cs @@ -68,17 +68,10 @@ public static byte[] SerializeObject(Person person) public static Person DeserializeObject(byte[] serializedData) { - Person deserializedPerson; var memoryStream = Constructors.ByteArrayConstructor(serializedData); using var reader = new BinaryReader(memoryStream); - deserializedPerson = new Person - { - FirstName = reader.ReadString(), - LastName = reader.ReadString(), - Age = reader.ReadInt32() - }; - - return deserializedPerson; + + return new Person(reader.ReadString(), reader.ReadString(), reader.ReadInt32()); } } diff --git a/csharp-intermediate-topics/MemoryStreamInCsharp/MemoryStreamInCsharp/Person.cs b/csharp-intermediate-topics/MemoryStreamInCsharp/MemoryStreamInCsharp/Person.cs index 5f0bdbc878..ef22799cc6 100644 --- a/csharp-intermediate-topics/MemoryStreamInCsharp/MemoryStreamInCsharp/Person.cs +++ b/csharp-intermediate-topics/MemoryStreamInCsharp/MemoryStreamInCsharp/Person.cs @@ -1,8 +1,3 @@ namespace MemoryStreamInCsharp; -public class Person -{ - public string FirstName { get; set; } - public string LastName { get; set; } - public int Age { get; set; } -} +public record Person(string FirstName, string LastName, int Age); diff --git a/csharp-intermediate-topics/MemoryStreamInCsharp/MemoryStreamInCsharp/Program.cs b/csharp-intermediate-topics/MemoryStreamInCsharp/MemoryStreamInCsharp/Program.cs index e9673c14ba..1a656cbc28 100644 --- a/csharp-intermediate-topics/MemoryStreamInCsharp/MemoryStreamInCsharp/Program.cs +++ b/csharp-intermediate-topics/MemoryStreamInCsharp/MemoryStreamInCsharp/Program.cs @@ -37,12 +37,7 @@ Methods.LoadImageFromResources(); -var person = new Person -{ - FirstName = "Jack", - LastName = "Black", - Age = 30 -}; +var person = new Person("Jack", "Black", 30); byte[] serializedData = Methods.SerializeObject(person); var deserializedPerson = Methods.DeserializeObject(serializedData); Console.WriteLine($"\nFirst Name: {deserializedPerson.FirstName}, " + diff --git a/csharp-intermediate-topics/MemoryStreamInCsharp/Tests/Tests/MethodsTests.cs b/csharp-intermediate-topics/MemoryStreamInCsharp/Tests/Tests/MethodsTests.cs index 1d8a846b9b..f999d54d95 100644 --- a/csharp-intermediate-topics/MemoryStreamInCsharp/Tests/Tests/MethodsTests.cs +++ b/csharp-intermediate-topics/MemoryStreamInCsharp/Tests/Tests/MethodsTests.cs @@ -62,31 +62,26 @@ public void WhenReadingFromMemoryStream_ThenSuccess() Methods.WriteToMemoryStream(memoryStream, phrase2Bytes); var phrases = Methods.ReadFromMemoryStream(memoryStream); - Assert.True(phrases[0].Equals("How to Use")); - Assert.True(phrases[1].Equals(" MemoryStream in C# ")); - Assert.True(phrases[2].Equals("- explanation with examples")); + Assert.Equal("How to Use", phrases[0]); + Assert.Equal(" MemoryStream in C# ", phrases[1]); + Assert.Equal("- explanation with examples", phrases[2]); var fullPhrase = Encoding.UTF8.GetString(memoryStream.ToArray()); - Assert.True(fullPhrase.Equals("How to Use MemoryStream in C# - explanation with examples")); + Assert.Equal("How to Use MemoryStream in C# - explanation with examples", fullPhrase); } [Fact] public void WhenSerializeAndDeserializePerson_ThenSuccess() { - var person = new Person - { - FirstName = "Jack", - LastName = "Black", - Age = 30 - }; + var person = new Person("Jack", "Black", 30); byte[] serializedData = Methods.SerializeObject(person); Assert.True(serializedData.Length > 0); var deserializedPerson = Methods.DeserializeObject(serializedData); - Assert.True(person.FirstName.Equals(deserializedPerson.FirstName)); - Assert.True(person.LastName.Equals(deserializedPerson.LastName)); - Assert.True(person.Age == deserializedPerson.Age); + Assert.Equal(person.FirstName, deserializedPerson.FirstName); + Assert.Equal(person.LastName, deserializedPerson.LastName); + Assert.Equal(person.Age, deserializedPerson.Age); } [Fact] diff --git a/csharp-intermediate-topics/MemoryStreamInCsharp/Tests/Tests/Tests.csproj b/csharp-intermediate-topics/MemoryStreamInCsharp/Tests/Tests/Tests.csproj index 81a7f99d5f..4992ef2ada 100644 --- a/csharp-intermediate-topics/MemoryStreamInCsharp/Tests/Tests/Tests.csproj +++ b/csharp-intermediate-topics/MemoryStreamInCsharp/Tests/Tests/Tests.csproj @@ -1,20 +1,20 @@ - net7.0 + net10.0 enable false - - - + + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all