diff --git a/README.md b/README.md index 6d3581c03..ea427d481 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ -# RSCG - 279 Examples of Roslyn Source Code Generators / 16 created by Microsoft / +# RSCG - 280 Examples of Roslyn Source Code Generators / 16 created by Microsoft / -The RSCG_Examples repository is a comprehensive documentation system that automatically processes and showcases 279 Roslyn Source Code Generator (RSCG) examples. The system transforms individual RSCG projects into structured documentation with code examples and cross-referenced content with a searchable website and code example exports. +The RSCG_Examples repository is a comprehensive documentation system that automatically processes and showcases 280 Roslyn Source Code Generator (RSCG) examples. The system transforms individual RSCG projects into structured documentation with code examples and cross-referenced content with a searchable website and code example exports. This system serves as both a learning resource for .NET developers interested in source generators and an automated pipeline for maintaining up-to-date documentation about the RSCG ecosystem -## Latest Update : 2026-08-19 => 19 August 2026 +## Latest Update : 2026-08-20 => 20 August 2026 If you want to see examples with code, please click ***[List V2](https://ignatandrei.github.io/RSCG_Examples/v2/docs/List-of-RSCG)*** @@ -24,8 +24,30 @@ If you want to be notified each time I add a new RSCG example , please click htt ## Content -Those are the 279 Roslyn Source Code Generators that I have tested you can see and download source code example. +Those are the 280 Roslyn Source Code Generators that I have tested you can see and download source code example. ( including 16 from Microsoft ) +### 280. [serde](https://ignatandrei.github.io/RSCG_Examples/v2/docs/serde) , in the [Serializer](https://ignatandrei.github.io/RSCG_Examples/v2/docs/rscg-examples#serializer) category + +Generated on : 2026-08-20 => 20 August 2026 + +
+ Expand + + + +Author: Andy Gocke + +Package Description + +Nuget: [https://www.nuget.org/packages/serde/](https://www.nuget.org/packages/serde/) + + +Link: [https://ignatandrei.github.io/RSCG_Examples/v2/docs/serde](https://ignatandrei.github.io/RSCG_Examples/v2/docs/serde) + +Source: [https://github.com/serdedotnet/serde](https://github.com/serdedotnet/serde) + +
+ ### 279. [ReflectionIT.DisposeGenerator](https://ignatandrei.github.io/RSCG_Examples/v2/docs/ReflectionIT.DisposeGenerator) , in the [Disposer](https://ignatandrei.github.io/RSCG_Examples/v2/docs/rscg-examples#disposer) category Generated on : 2026-08-19 => 19 August 2026 diff --git a/later.md b/later.md index c482172ea..4594e7e2b 100644 --- a/later.md +++ b/later.md @@ -1,6 +1,6 @@ # Just later -## Latest Update : 2026-08-19 => 19 August 2026 +## Latest Update : 2026-08-20 => 20 August 2026 diff --git a/v2/Generator/all.csv b/v2/Generator/all.csv index 7e51dc849..bc261094a 100644 --- a/v2/Generator/all.csv +++ b/v2/Generator/all.csv @@ -278,3 +278,4 @@ Nr,Key,Source,Category 277,Bennewitz.Ninja.AutoVersioning, https://github.com/JanusMael/Bennewitz.Ninja.AutoVersioning,EnhancementProject 278,Atulin.AutoDbSet, https://github.com/Atulin/AutoDbSet,EntityFramework 279,ReflectionIT.DisposeGenerator, https://github.com/sonnemaf/ReflectionIT.DisposeGenerator,Disposer +280,serde, https://github.com/serdedotnet/serde,Serializer diff --git a/v2/RSCGExamplesData/GeneratorDataRec.json b/v2/RSCGExamplesData/GeneratorDataRec.json index e658bbcb6..d9457af99 100644 --- a/v2/RSCGExamplesData/GeneratorDataRec.json +++ b/v2/RSCGExamplesData/GeneratorDataRec.json @@ -1690,5 +1690,12 @@ "Category": 18, "dtStart": "2026-08-19T00:00:00", "show": true - } + }, + +{ + "ID":"serde", + "Category":16, + "dtStart": "2026-08-20T00:00:00", + "show": true +} ] \ No newline at end of file diff --git a/v2/book/examples/ReflectionIT.DisposeGenerator.html b/v2/book/examples/ReflectionIT.DisposeGenerator.html index a094f2948..86c57726e 100644 --- a/v2/book/examples/ReflectionIT.DisposeGenerator.html +++ b/v2/book/examples/ReflectionIT.DisposeGenerator.html @@ -28,6 +28,12 @@

This was for me the starting code

I have coded the file Program.cs
+
+ +
+ I have coded the file DALDB.cs +
+

diff --git a/v2/book/examples/serde.html b/v2/book/examples/serde.html new file mode 100644 index 000000000..790c49db6 --- /dev/null +++ b/v2/book/examples/serde.html @@ -0,0 +1,69 @@ + +

RSCG nr 280 : serde

+ +

Info

+Nuget : https://www.nuget.org/packages/serde/ + +

You can find more details at : https://github.com/serdedotnet/serde

+ +

Author :Andy Gocke

+ +

Source: https://github.com/serdedotnet/serde

+ +

About

+ +Serializing in SERDE format + +

+ How to use +

+

+ Add reference to the serde in the csproj +

+ + +

This was for me the starting code

+ +
+ I have coded the file Program.cs +
+ +
+ +
+ I have coded the file Person.cs +
+ +
+

And here are the generated files

+ +
+ The file generated is SerializerDemo.Person.ISerde.g.cs +
+ + +
+ The file generated is SerializerDemo.Person.ISerdeInfoProvider.g.cs +
+ + +
+ The file generated is SerializerDemo.Person.ISerdeProvider.g.cs +
+ + +

+ You can download the code and this page as pdf from + + https://ignatandrei.github.io/RSCG_Examples/v2/docs/serde + +

+ + +

+ You can see the whole list at + + https://ignatandrei.github.io/RSCG_Examples/v2/docs/List-of-RSCG + +

+ diff --git a/v2/book/list.html b/v2/book/list.html index e62f28c0d..2706fd551 100644 --- a/v2/book/list.html +++ b/v2/book/list.html @@ -17,7 +17,7 @@

-This is the list of 279 RSCG with examples => +This is the list of 280 RSCG with examples =>

@@ -1142,6 +1142,10 @@

+ + + +
279 ReflectionIT.DisposeGenerator
280serde
diff --git a/v2/book/pandocHTML.yaml b/v2/book/pandocHTML.yaml index 1b8dd70fa..9f49ca3f9 100644 --- a/v2/book/pandocHTML.yaml +++ b/v2/book/pandocHTML.yaml @@ -293,6 +293,7 @@ input-files: - examples/Bennewitz.Ninja.AutoVersioning.html - examples/Atulin.AutoDbSet.html - examples/ReflectionIT.DisposeGenerator.html +- examples/serde.html # or you may use input-file: with a single value # defaults: diff --git a/v2/docFind.json b/v2/docFind.json index c2e276b50..40d04a261 100644 --- a/v2/docFind.json +++ b/v2/docFind.json @@ -1672,5 +1672,11 @@ "category": "Disposer", "href": "/RSCG_Examples/v2/docs/ReflectionIT.DisposeGenerator/", "body": "Package Description" + }, + { + "title": "serde", + "category": "Serializer", + "href": "/RSCG_Examples/v2/docs/serde/", + "body": "Package Description" } ] \ No newline at end of file diff --git a/v2/rscg_examples/ReflectionIT.DisposeGenerator/src/.tours/ReflectionIT.DisposeGenerator.tour b/v2/rscg_examples/ReflectionIT.DisposeGenerator/src/.tours/ReflectionIT.DisposeGenerator.tour index 3601ad15d..0b6c8b8bf 100644 --- a/v2/rscg_examples/ReflectionIT.DisposeGenerator/src/.tours/ReflectionIT.DisposeGenerator.tour +++ b/v2/rscg_examples/ReflectionIT.DisposeGenerator/src/.tours/ReflectionIT.DisposeGenerator.tour @@ -16,6 +16,12 @@ "pattern": "this is the code" } + ,{ + "file": "IDisp/DALDB.cs", + "description": "File DALDB.cs ", + "pattern": "this is the code" + } + ,{ "file": "IDisp/Program.cs", "description": "File Program.cs \r\n>> dotnet run --project IDisp/IDisp.csproj ", diff --git a/v2/rscg_examples/serde/description.json b/v2/rscg_examples/serde/description.json new file mode 100644 index 000000000..a9a987b67 --- /dev/null +++ b/v2/rscg_examples/serde/description.json @@ -0,0 +1,22 @@ +{ + "generator":{ + "name":"serde", + "nuget":[ + "https://www.nuget.org/packages/serde/" + ], + "link":"https://github.com/serdedotnet/serde", + "author":"Andy Gocke", + "source":"https://github.com/serdedotnet/serde" + }, + "data":{ + "goodFor":["Serializing in SERDE format"], + "csprojDemo":"Serializer.csproj", + "csFiles":["Program.cs","Person.cs"], + "excludeDirectoryGenerated":[""], + "includeAdditionalFiles":[""] + }, + "links":{ + "blog":"", + "video":"" + } +} \ No newline at end of file diff --git a/v2/rscg_examples/serde/nuget.txt b/v2/rscg_examples/serde/nuget.txt new file mode 100644 index 000000000..882e74f60 --- /dev/null +++ b/v2/rscg_examples/serde/nuget.txt @@ -0,0 +1 @@ +Package Description \ No newline at end of file diff --git a/v2/rscg_examples/serde/readme.txt b/v2/rscg_examples/serde/readme.txt new file mode 100644 index 000000000..455e056c2 --- /dev/null +++ b/v2/rscg_examples/serde/readme.txt @@ -0,0 +1,40 @@ +# Serde.NET + +Serde.NET is a port of the popular [serde.rs](https://serde.rs) Rust ***ser***ialization/***de***serialization +library to .NET. + +For an overview, see [Overview](https://serdedotnet.github.io/overview.html). + +Start by adding the `serde` NuGet package: + +```bash +dotnet add package serde +``` + +To generate serialization/deserialization info for a type, now do the following: +1. Mark the type partial +2. Add the `[GenerateSerde]` attribute + + +```csharp +using Serde; +using Serde.Json; + +string output = JsonSerializer.Serialize(new SampleClass()); + +// prints: {"X":3,"Y":"sample"} +Console.WriteLine(output); + +var deserialized = JsonSerializer.Deserialize(output); + +// prints SampleClass { X = 3, Y = sample } +Console.WriteLine(deserialized); + +[GenerateSerde] +partial record SampleClass +{ + // automatically includes public properties and fields + public int X { get; init; } = 3; + public string Y = "sample"; +} +``` diff --git a/v2/rscg_examples/serde/src/.tours/serde.tour b/v2/rscg_examples/serde/src/.tours/serde.tour new file mode 100644 index 000000000..8d7c7a0c8 --- /dev/null +++ b/v2/rscg_examples/serde/src/.tours/serde.tour @@ -0,0 +1,48 @@ + +{ + "$schema": "https://aka.ms/codetour-schema", + "title": "serde", + "steps": + [ + { + "file": "Serializer/Serializer.csproj", + "description": "First, we add Nuget [serde](https://www.nuget.org/packages/serde/) in csproj ", + "pattern": "serde" + } + + ,{ + "file": "Serializer/Person.cs", + "description": "File Person.cs ", + "pattern": "this is the code" + } + + ,{ + "file": "Serializer/Program.cs", + "description": "File Program.cs \r\n>> dotnet run --project Serializer/Serializer.csproj ", + "pattern": "this is the code" + } + + + ,{ + "file": "Serializer/obj/GX/SerdeGenerator/Serde.SerdeImplRoslynGenerator/SerializerDemo.Person.ISerdeProvider.g.cs", + "description": "Generated File 3 from 3 : SerializerDemo.Person.ISerdeProvider.g.cs ", + "line": 1 + } + + ,{ + "file": "Serializer/obj/GX/SerdeGenerator/Serde.SerdeImplRoslynGenerator/SerializerDemo.Person.ISerdeInfoProvider.g.cs", + "description": "Generated File 2 from 3 : SerializerDemo.Person.ISerdeInfoProvider.g.cs ", + "line": 1 + } + + ,{ + "file": "Serializer/obj/GX/SerdeGenerator/Serde.SerdeImplRoslynGenerator/SerializerDemo.Person.ISerde.g.cs", + "description": "Generated File 1 from 3 : SerializerDemo.Person.ISerde.g.cs ", + "line": 1 + } + + ], + + "ref": "main" + +} \ No newline at end of file diff --git a/v2/rscg_examples/serde/src/Serializer.sln b/v2/rscg_examples/serde/src/Serializer.sln new file mode 100644 index 000000000..40466f7c7 --- /dev/null +++ b/v2/rscg_examples/serde/src/Serializer.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.7.34031.279 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Serializer", "Serializer\Serializer.csproj", "{7FC58895-BFD9-892B-A3D5-1812858E3D58}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7FC58895-BFD9-892B-A3D5-1812858E3D58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7FC58895-BFD9-892B-A3D5-1812858E3D58}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7FC58895-BFD9-892B-A3D5-1812858E3D58}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7FC58895-BFD9-892B-A3D5-1812858E3D58}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {13C14387-12AE-4C73-9EBA-2D145CD7C194} + EndGlobalSection +EndGlobal diff --git a/v2/rscg_examples/serde/src/Serializer/Person.cs b/v2/rscg_examples/serde/src/Serializer/Person.cs new file mode 100644 index 000000000..f73fe75d3 --- /dev/null +++ b/v2/rscg_examples/serde/src/Serializer/Person.cs @@ -0,0 +1,13 @@ + +using Serde; + +namespace SerializerDemo; + +[GenerateSerde] +public partial class Person +{ + public int Age { get; set; } + public string Name { get; set; } = string.Empty; + +} + diff --git a/v2/rscg_examples/serde/src/Serializer/Program.cs b/v2/rscg_examples/serde/src/Serializer/Program.cs new file mode 100644 index 000000000..3734c36c2 --- /dev/null +++ b/v2/rscg_examples/serde/src/Serializer/Program.cs @@ -0,0 +1,9 @@ +using Serde.Json; +using SerializerDemo; + +Person p = new () { Name= "Andrei Ignat" , Age=55}; +var utf8= JsonSerializer.Serialize(p); +Console.WriteLine(utf8); +var p1 = JsonSerializer.Deserialize(utf8); +Console.WriteLine(p.Name); +Console.WriteLine(p1.Age); \ No newline at end of file diff --git a/v2/rscg_examples/serde/src/Serializer/Serializer.csproj b/v2/rscg_examples/serde/src/Serializer/Serializer.csproj new file mode 100644 index 000000000..656441d26 --- /dev/null +++ b/v2/rscg_examples/serde/src/Serializer/Serializer.csproj @@ -0,0 +1,17 @@ + + + + Exe + net10.0 + enable + enable + + + true + $(BaseIntermediateOutputPath)\GX + + + + + + diff --git a/v2/rscg_examples/serde/video.json b/v2/rscg_examples/serde/video.json new file mode 100644 index 000000000..9a2470715 --- /dev/null +++ b/v2/rscg_examples/serde/video.json @@ -0,0 +1,39 @@ +{ + "scriptName": "serde", + "steps": +[ + {"typeStep":"exec","arg":"clipchamp.exe launch"}, + {"typeStep":"text","arg": "Welcome to Roslyn Examples"}, + {"typeStep":"text","arg":"If you want to see more examples , see List Of RSCG"}, + {"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/List-of-RSCG"}, + {"typeStep":"text","arg": "My name is Andrei Ignat and I am deeply fond of Roslyn Source Code Generator. "}, + +{"typeStep":"text","arg": "Today I will present serde . Serializing in SERDE format ."}, +{"typeStep":"browser","arg":"https://www.nuget.org/packages/serde/"}, +{"typeStep":"text","arg": "The whole example is here"}, +{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/serde"}, +{"typeStep":"text","arg": "You can download the code from here"}, +{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/serde#download-example-net--c-"}, +{"typeStep":"text","arg":"Here is the code downloaded "}, +{"typeStep":"exec","arg":"explorer.exe /select,D:\\gth\\RSCG_Examples\\v2\\rscg_examples\\serde\\src\\Serializer.sln"}, +{"typeStep":"text","arg": "So , let's start the project with Visual Studio Code "}, +{"typeStep":"stepvscode","arg": "-n D:\\gth\\RSCG_Examples\\v2\\rscg_examples\\serde\\src"}, + +{"typeStep":"text","arg": "To use it ,you will put the Nuget serde into the csproj "}, + +{"typeStep":"stepvscode","arg": "-r -g D:\\gth\\RSCG_Examples\\v2\\rscg_examples\\serde\\src\\Serializer\\Serializer.csproj"}, + +{"typeStep":"text","arg": "And now I will show you an example of using serde"}, + +{"typeStep":"hide","arg": "now execute the tour in VSCode"}, +{"typeStep":"tour", "arg": "src/.tours/"}, +{"typeStep":"text","arg":" And I will execute the project"}, +{"typeStep":"showproj", "arg":"Serializer.csproj"}, +{"typeStep":"text","arg":" This concludes the project"}, +{"typeStep":"waitseconds","arg":"30"}, +{"typeStep":"text","arg": "Remember, you can download the code from here"}, +{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/serde#download-example-net--c-", +SpeakTest=" "}, +{"typeStep":"waitseconds","arg":"30"}, +] +} diff --git a/v2/rscg_examples_site/docs/Authors/Andy_Gocke.md b/v2/rscg_examples_site/docs/Authors/Andy_Gocke.md new file mode 100644 index 000000000..f2488886c --- /dev/null +++ b/v2/rscg_examples_site/docs/Authors/Andy_Gocke.md @@ -0,0 +1,7 @@ +# Author : Andy Gocke + +Number RSCG: 1 + + + 1 [serde](/docs/serde) [![Nuget](https://img.shields.io/nuget/dt/serde?label=serde)](https://www.nuget.org/packages/serde/) ![GitHub Repo stars](https://img.shields.io/github/stars/serdedotnet/serde?style=social) 2026-08-20 + diff --git a/v2/rscg_examples_site/docs/Categories/Serializer.md b/v2/rscg_examples_site/docs/Categories/Serializer.md index 60ca9d208..f2d86688a 100644 --- a/v2/rscg_examples_site/docs/Categories/Serializer.md +++ b/v2/rscg_examples_site/docs/Categories/Serializer.md @@ -1,6 +1,6 @@

Serializer

-Number RSCG: 10 +Number RSCG: 11 1 [Csvcsharp](/docs/Csvcsharp) [![Nuget](https://img.shields.io/nuget/dt/Csvcsharp?label=Csvcsharp)](https://www.nuget.org/packages/Csvcsharp/) ![GitHub Repo stars](https://img.shields.io/github/stars/nuskey8/Csv-CSharp?style=social) 2025-10-05 @@ -16,9 +16,11 @@ Number RSCG: 10 7 [Schema](/docs/Schema) [![Nuget](https://img.shields.io/nuget/dt/Schema?label=Schema)](https://www.nuget.org/packages/Schema/) ![GitHub Repo stars](https://img.shields.io/github/stars/MeltyPlayer/Schema?style=social) 2025-08-13 - 8 [StackXML](/docs/StackXML) [![Nuget](https://img.shields.io/nuget/dt/StackXML?label=StackXML)](https://www.nuget.org/packages/StackXML/) ![GitHub Repo stars](https://img.shields.io/github/stars/ZingBallyhoo/StackXML?style=social) 2025-08-01 + 8 [serde](/docs/serde) [![Nuget](https://img.shields.io/nuget/dt/serde?label=serde)](https://www.nuget.org/packages/serde/) ![GitHub Repo stars](https://img.shields.io/github/stars/serdedotnet/serde?style=social) 2026-08-20 - 9 [System.Text.Json](/docs/System.Text.Json) [![Nuget](https://img.shields.io/nuget/dt/System.Text.Json?label=System.Text.Json)](https://www.nuget.org/packages/System.Text.Json/) ![GitHub Repo stars](https://img.shields.io/github/stars/dotnet/runtime?style=social) 2023-04-16 + 9 [StackXML](/docs/StackXML) [![Nuget](https://img.shields.io/nuget/dt/StackXML?label=StackXML)](https://www.nuget.org/packages/StackXML/) ![GitHub Repo stars](https://img.shields.io/github/stars/ZingBallyhoo/StackXML?style=social) 2025-08-01 - 10 [VYaml](/docs/VYaml) [![Nuget](https://img.shields.io/nuget/dt/VYaml?label=VYaml)](https://www.nuget.org/packages/VYaml/) ![GitHub Repo stars](https://img.shields.io/github/stars/hadashiA/VYaml?style=social) 2025-10-03 + 10 [System.Text.Json](/docs/System.Text.Json) [![Nuget](https://img.shields.io/nuget/dt/System.Text.Json?label=System.Text.Json)](https://www.nuget.org/packages/System.Text.Json/) ![GitHub Repo stars](https://img.shields.io/github/stars/dotnet/runtime?style=social) 2023-04-16 + + 11 [VYaml](/docs/VYaml) [![Nuget](https://img.shields.io/nuget/dt/VYaml?label=VYaml)](https://www.nuget.org/packages/VYaml/) ![GitHub Repo stars](https://img.shields.io/github/stars/hadashiA/VYaml?style=social) 2025-10-03 \ No newline at end of file diff --git a/v2/rscg_examples_site/docs/Categories/_PrimitiveSerializer.mdx b/v2/rscg_examples_site/docs/Categories/_PrimitiveSerializer.mdx index 462a22290..77e2941b8 100644 --- a/v2/rscg_examples_site/docs/Categories/_PrimitiveSerializer.mdx +++ b/v2/rscg_examples_site/docs/Categories/_PrimitiveSerializer.mdx @@ -14,11 +14,13 @@ 7 [Schema](/docs/Schema) [![Nuget](https://img.shields.io/nuget/dt/Schema?label=Schema)](https://www.nuget.org/packages/Schema/) ![GitHub Repo stars](https://img.shields.io/github/stars/MeltyPlayer/Schema?style=social) 2025-08-13 - 8 [StackXML](/docs/StackXML) [![Nuget](https://img.shields.io/nuget/dt/StackXML?label=StackXML)](https://www.nuget.org/packages/StackXML/) ![GitHub Repo stars](https://img.shields.io/github/stars/ZingBallyhoo/StackXML?style=social) 2025-08-01 + 8 [serde](/docs/serde) [![Nuget](https://img.shields.io/nuget/dt/serde?label=serde)](https://www.nuget.org/packages/serde/) ![GitHub Repo stars](https://img.shields.io/github/stars/serdedotnet/serde?style=social) 2026-08-20 - 9 [System.Text.Json](/docs/System.Text.Json) [![Nuget](https://img.shields.io/nuget/dt/System.Text.Json?label=System.Text.Json)](https://www.nuget.org/packages/System.Text.Json/) ![GitHub Repo stars](https://img.shields.io/github/stars/dotnet/runtime?style=social) 2023-04-16 + 9 [StackXML](/docs/StackXML) [![Nuget](https://img.shields.io/nuget/dt/StackXML?label=StackXML)](https://www.nuget.org/packages/StackXML/) ![GitHub Repo stars](https://img.shields.io/github/stars/ZingBallyhoo/StackXML?style=social) 2025-08-01 - 10 [VYaml](/docs/VYaml) [![Nuget](https://img.shields.io/nuget/dt/VYaml?label=VYaml)](https://www.nuget.org/packages/VYaml/) ![GitHub Repo stars](https://img.shields.io/github/stars/hadashiA/VYaml?style=social) 2025-10-03 + 10 [System.Text.Json](/docs/System.Text.Json) [![Nuget](https://img.shields.io/nuget/dt/System.Text.Json?label=System.Text.Json)](https://www.nuget.org/packages/System.Text.Json/) ![GitHub Repo stars](https://img.shields.io/github/stars/dotnet/runtime?style=social) 2023-04-16 + + 11 [VYaml](/docs/VYaml) [![Nuget](https://img.shields.io/nuget/dt/VYaml?label=VYaml)](https://www.nuget.org/packages/VYaml/) ![GitHub Repo stars](https://img.shields.io/github/stars/hadashiA/VYaml?style=social) 2025-10-03 ### See category diff --git a/v2/rscg_examples_site/docs/RSCG-Examples/ReflectionIT.DisposeGenerator.md b/v2/rscg_examples_site/docs/RSCG-Examples/ReflectionIT.DisposeGenerator.md index fe299cf86..736859fb4 100644 --- a/v2/rscg_examples_site/docs/RSCG-Examples/ReflectionIT.DisposeGenerator.md +++ b/v2/rscg_examples_site/docs/RSCG-Examples/ReflectionIT.DisposeGenerator.md @@ -605,7 +605,7 @@ This is the CSharp Project that references **ReflectionIT.DisposeGenerator** ```csharp showLineNumbers using IDisposableGeneratorDemo; -//https://github.com/benutomo-dev/RoslynComponents +// https://github.com/sonnemaf/ReflectionIT.DisposeGenerator using (var db = new DALDB()) { Console.WriteLine("before releasing"); @@ -614,13 +614,39 @@ Console.WriteLine("after releasing"); ``` - + - This is the use of **ReflectionIT.DisposeGenerator** in *ConnectionDB.cs* + This is the use of **ReflectionIT.DisposeGenerator** in *DALDB.cs* ```csharp showLineNumbers using ReflectionIT.DisposeGenerator.Attributes; +namespace IDisposableGeneratorDemo; + +[Disposable] +partial class DALDB :IDisposable +{ + [Dispose] + private ConnectionDB cn; + [Dispose] + private ConnectionDB cn1; + + public DALDB() + { + cn = new ConnectionDB(); + cn1=new ConnectionDB(); + } + +} + +``` + + + + + This is the use of **ReflectionIT.DisposeGenerator** in *ConnectionDB.cs* + +```csharp showLineNumbers namespace IDisposableGeneratorDemo; class ConnectionDB : IDisposable { diff --git a/v2/rscg_examples_site/docs/RSCG-Examples/index.md b/v2/rscg_examples_site/docs/RSCG-Examples/index.md index b4b863083..af0412e29 100644 --- a/v2/rscg_examples_site/docs/RSCG-Examples/index.md +++ b/v2/rscg_examples_site/docs/RSCG-Examples/index.md @@ -1,7 +1,7 @@ --- sidebar_position: 30 -title: 279 RSCG list by category -description: 279 RSCG list by category +title: 280 RSCG list by category +description: 280 RSCG list by category slug: /rscg-examples --- @@ -1510,7 +1510,7 @@ import DocCardList from '@theme/DocCardList'; ## Serializer
- Expand Serializer =>examples:10 + Expand Serializer =>examples:11 @@ -1561,6 +1561,11 @@ import DocCardList from '@theme/DocCardList'; [Csvcsharp](/docs/Csvcsharp) + + + +[serde](/docs/serde) +
@@ -2250,6 +2255,8 @@ flowchart LR; Serializer--> Csvcsharp((Csvcsharp)) + Serializer--> serde((serde)) + SignalR--> TypedSignalR.Client((TypedSignalR.Client)) StateMachine--> SuperFluid((SuperFluid)) diff --git a/v2/rscg_examples_site/docs/RSCG-Examples/serde.md b/v2/rscg_examples_site/docs/RSCG-Examples/serde.md new file mode 100644 index 000000000..f07c8077f --- /dev/null +++ b/v2/rscg_examples_site/docs/RSCG-Examples/serde.md @@ -0,0 +1,324 @@ +--- +sidebar_position: 2800 +title: 280 - serde +description: Serializing in SERDE format +slug: /serde +--- +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import TOCInline from '@theme/TOCInline'; +import SameCategory from '../Categories/_PrimitiveSerializer.mdx'; + +# serde by Andy Gocke + + + + +## NuGet / site data +[![Nuget](https://img.shields.io/nuget/dt/serde?label=serde)](https://www.nuget.org/packages/serde/) +[![GitHub last commit](https://img.shields.io/github/last-commit/serdedotnet/serde?label=updated)](https://github.com/serdedotnet/serde) +![GitHub Repo stars](https://img.shields.io/github/stars/serdedotnet/serde?style=social) + +## Details + +### Info +:::info + +Name: **serde** + +Package Description + +Author: Andy Gocke + +NuGet: +*https://www.nuget.org/packages/serde/* + + +You can find more details at https://github.com/serdedotnet/serde + +Source: https://github.com/serdedotnet/serde + +::: + +### Author +:::note +Andy Gocke +![Alt text](https://github.com/serdedotnet.png) +::: + +## Original Readme +:::note + +### Serde.NET + +Serde.NET is a port of the popular [serde.rs](https://serde.rs) Rust ***ser***ialization/***de***serialization +library to .NET. + +For an overview, see [Overview](https://serdedotnet.github.io/overview.html). + +Start by adding the `serde` NuGet package: + +```bash +dotnet add package serde +``` + +To generate serialization/deserialization info for a type, now do the following: +1. Mark the type partial +2. Add the `[GenerateSerde]` attribute + + +```csharp +using Serde; +using Serde.Json; + +string output = JsonSerializer.Serialize(new SampleClass()); + +// prints: {"X":3,"Y":"sample"} +Console.WriteLine(output); + +var deserialized = JsonSerializer.Deserialize(output); + +// prints SampleClass \{ X = 3, Y = sample } +Console.WriteLine(deserialized); + +[GenerateSerde] +partial record SampleClass +{ + // automatically includes public properties and fields + public int X \{ get; init; \} = 3; + public string Y = "sample"; +} +``` + + +::: + +### About +:::note + +Serializing in SERDE format + + +::: + +## How to use + +### Example (source csproj, source files) + + + + + +This is the CSharp Project that references **serde** +```xml showLineNumbers {14} + + + + Exe + net10.0 + enable + enable + + + true + $(BaseIntermediateOutputPath)\GX + + + + + + + +``` + + + + + + This is the use of **serde** in *Program.cs* + +```csharp showLineNumbers +using Serde.Json; +using SerializerDemo; + +Person p = new () \{ Name= "Andrei Ignat" , Age=55}; +var utf8= JsonSerializer.Serialize(p); +Console.WriteLine(utf8); +var p1 = JsonSerializer.Deserialize(utf8); +Console.WriteLine(p.Name); +Console.WriteLine(p1.Age); +``` + + + + + This is the use of **serde** in *Person.cs* + +```csharp showLineNumbers + +using Serde; + +namespace SerializerDemo; + +[GenerateSerde] +public partial class Person +{ + public int Age \{ get; set; } + public string Name \{ get; set; \} = string.Empty; + +} + + +``` + + + + +### Generated Files + +Those are taken from $(BaseIntermediateOutputPath)\GX + + + + +```csharp showLineNumbers + +#nullable enable + +using System; +using Serde; + +namespace SerializerDemo; + +partial class Person +{ + sealed partial class _SerdeObj : global::Serde.ISerde + { + global::Serde.ISerdeInfo global::Serde.ISerdeInfoProvider.SerdeInfo => SerializerDemo.Person.s_serdeInfo; + + void global::Serde.ISerialize.Serialize(SerializerDemo.Person value, global::Serde.ISerializer serializer) + { + var _l_info = global::Serde.SerdeInfoProvider.GetInfo(this); + var _l_type = serializer.WriteType(_l_info, 2); + _l_type.WriteI32(_l_info, 0, value.Age); + _l_type.WriteString(_l_info, 1, value.Name); + _l_type.End(_l_info); + } + SerializerDemo.Person Serde.IDeserialize.Deserialize(IDeserializer deserializer) + { + int _l_age = default!; + string _l_name = string.Empty; + + byte _r_assignedValid = 0; + + var _l_serdeInfo = global::Serde.SerdeInfoProvider.GetInfo(this); + var typeDeserialize = deserializer.ReadType(_l_serdeInfo); + while (true) + { + var (_l_index_, _) = typeDeserialize.TryReadIndexWithName(_l_serdeInfo); + if (_l_index_ == Serde.ITypeDeserializer.EndOfType) + { + break; + } + + switch (_l_index_) + { + case 0: + Serde.DeserializeException.ThrowIfDuplicate(_r_assignedValid, 0, _l_serdeInfo); + _l_age = typeDeserialize.ReadI32(_l_serdeInfo, _l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case 1: + Serde.DeserializeException.ThrowIfDuplicate(_r_assignedValid, 1, _l_serdeInfo); + _l_name = typeDeserialize.ReadString(_l_serdeInfo, _l_index_); + _r_assignedValid |= ((byte)1) << 1; + break; + case Serde.ITypeDeserializer.IndexNotFound: + typeDeserialize.SkipValue(_l_serdeInfo, _l_index_); + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); + } + } + typeDeserialize.End(_l_serdeInfo); + if ((_r_assignedValid & 0b1) != 0b1) + { + throw Serde.DeserializeException.UnassignedMember(); + } + var newType = new SerializerDemo.Person() { + Age = _l_age, + Name = _l_name, + }; + + return newType; + } + } +} + +``` + + + + +```csharp showLineNumbers + +#nullable enable + +namespace SerializerDemo; + +partial class Person +{ + private static global::Serde.ISerdeInfo s_serdeInfo = Serde.SerdeInfo.MakeCustom( + "Person", + typeof(SerializerDemo.Person).GetCustomAttributesData(), + new global::Serde.SerdeInfo.FieldInfo[] { + new("age", global::Serde.SerdeInfoProvider.GetSerializeInfo()), + new("name", global::Serde.SerdeInfoProvider.GetSerializeInfo()) + } + ); +} + +``` + + + + +```csharp showLineNumbers + +namespace SerializerDemo; + +partial class Person : Serde.ISerdeProvider +{ + static SerializerDemo.Person._SerdeObj global::Serde.ISerdeProvider.Instance \{ get; } + = new SerializerDemo.Person._SerdeObj(); +} + +``` + + + + +## Useful + +### Download Example (.NET C#) + +:::tip + +[Download Example project serde ](/sources/serde.zip) + +::: + + +### Share serde + + + +https://ignatandrei.github.io/RSCG_Examples/v2/docs/serde + + + diff --git a/v2/rscg_examples_site/docs/about.md b/v2/rscg_examples_site/docs/about.md index 1e2688e03..4cd50d1a5 100644 --- a/v2/rscg_examples_site/docs/about.md +++ b/v2/rscg_examples_site/docs/about.md @@ -6,7 +6,7 @@ title: About ## Content You will find here code examples -of 279 Roslyn Source Code Generator (RSCG) +of 280 Roslyn Source Code Generator (RSCG) that can be useful for you. That means, you will write more elegant and concise code - even if the generators code is not always nice to look. ## Are those examples ready for production? diff --git a/v2/rscg_examples_site/docs/indexRSCG.md b/v2/rscg_examples_site/docs/indexRSCG.md index bebbc18da..bbd0fd4e9 100644 --- a/v2/rscg_examples_site/docs/indexRSCG.md +++ b/v2/rscg_examples_site/docs/indexRSCG.md @@ -7,9 +7,9 @@ slug: /List-of-RSCG import useBaseUrl from '@docusaurus/useBaseUrl'; -## 279 RSCG with examples in descending chronological order +## 280 RSCG with examples in descending chronological order -This is the list of 279 ( 16 from Microsoft) RSCG with examples +This is the list of 280 ( 16 from Microsoft) RSCG with examples [See by category](/docs/rscg-examples) [See as json](/exports/RSCG.json) [See as Excel](/exports/RSCG.xlsx) @@ -20,6 +20,7 @@ This is the list of 279 ( 16 from Microsoft) RSCG with examples | No | Name | Date | Category | | --------- | ----- | ---- | -------- | +|280| [serde by Andy Gocke ](/docs/serde)|2026-08-20 => 20 August 2026 | [Serializer](/docs/Categories/Serializer) | |279| [ReflectionIT.DisposeGenerator by Fons Sonnemans ](/docs/ReflectionIT.DisposeGenerator)|2026-08-19 => 19 August 2026 | [Disposer](/docs/Categories/Disposer) | |278| [Atulin.AutoDbSet by Angius Atulin ](/docs/Atulin.AutoDbSet)|2026-08-18 => 18 August 2026 | [EntityFramework](/docs/Categories/EntityFramework) | |277| [Bennewitz.Ninja.AutoVersioning by Brian Bennewitz ](/docs/Bennewitz.Ninja.AutoVersioning)|2026-07-04 => 04 July 2026 | [EnhancementProject](/docs/Categories/EnhancementProject) | diff --git a/v2/rscg_examples_site/src/components/HomepageFeatures/index.js b/v2/rscg_examples_site/src/components/HomepageFeatures/index.js index b693194eb..88b590fad 100644 --- a/v2/rscg_examples_site/src/components/HomepageFeatures/index.js +++ b/v2/rscg_examples_site/src/components/HomepageFeatures/index.js @@ -4,7 +4,7 @@ import styles from './styles.module.css'; const FeatureList = [ { -title: '279 Examples (16 from MSFT)', +title: '280 Examples (16 from MSFT)', Svg: require('@site/static/img/undraw_docusaurus_mountain.svg').default, description: ( <> diff --git a/v2/rscg_examples_site/static/exports/RSCG.json b/v2/rscg_examples_site/static/exports/RSCG.json index 1f4eda312..ea6b0b197 100644 --- a/v2/rscg_examples_site/static/exports/RSCG.json +++ b/v2/rscg_examples_site/static/exports/RSCG.json @@ -2233,6 +2233,14 @@ "Source": "https://github.com/sonnemaf/ReflectionIT.DisposeGenerator", "Category": "Disposer", "AddedOn": "2026-08-19T00:00:00" + }, + { + "Name": "serde", + "Link": "https://ignatandrei.github.io/RSCG_Examples/v2/docs/serde", + "NuGet": "https://www.nuget.org/packages/serde/", + "Source": "https://github.com/serdedotnet/serde", + "Category": "Serializer", + "AddedOn": "2026-08-20T00:00:00" } ] } \ No newline at end of file diff --git a/v2/rscg_examples_site/static/exports/RSCG.xlsx b/v2/rscg_examples_site/static/exports/RSCG.xlsx index e33512de2..eafea8334 100644 Binary files a/v2/rscg_examples_site/static/exports/RSCG.xlsx and b/v2/rscg_examples_site/static/exports/RSCG.xlsx differ diff --git a/v2/rscg_examples_site/static/sources/serde.zip b/v2/rscg_examples_site/static/sources/serde.zip new file mode 100644 index 000000000..fb808a74e Binary files /dev/null and b/v2/rscg_examples_site/static/sources/serde.zip differ