Added comprehensive README.md documentation to every project and subfolder in the solution. Each README describes the purpose, key files, structure, dependencies, and design patterns for its area. This improves codebase navigability and maintainability, and includes a maintenance note to keep docs in sync with future code changes. |
||
|---|---|---|
| .. | ||
| AcBinarySourceGenerator.cs | ||
| AyCode.Core.Serializers.SourceGenerator.csproj | ||
| README.md | ||
README.md
AyCode.Core.Serializers.SourceGenerator
Roslyn incremental source generator that produces optimized IGeneratedBinaryWriter and IGeneratedBinaryReader implementations for types marked with [AcBinarySerializable]. Eliminates runtime reflection on serialization hot paths.
Targets netstandard2.0 (required for Roslyn analyzers/generators).
Key Files
AcBinarySourceGenerator.cs— Single-fileIIncrementalGenerator(~2100 lines). Generates:{ClassName}_GeneratedWriter— Per-type writer withScanObject()+WriteProperties()methods. Handles primitives, strings (with interning), collections, dictionaries, complex nested types, and polymorphic objects.{ClassName}_GeneratedReader— Per-type reader withReadProperties()method.ModuleInitializer— Auto-registers all generated writers/readers at startup.- Circular reference detection with
ACBIN001diagnostic warning.
Feature Flags
The [AcBinarySerializable] attribute supports per-type feature control:
enableMetadata— Property hash metadata for cross-type deserializationenableIdTracking— IId-based reference trackingenableRefHandling— General reference trackingenableInternString— String interning/deduplication
Disabled features eliminate corresponding code blocks from generated output (zero dead code).
Dependencies
| Dependency | Purpose |
|---|---|
Microsoft.CodeAnalysis.CSharp |
Roslyn syntax/semantic APIs |
Microsoft.CodeAnalysis.Analyzers |
Analyzer best practices |
LLM Maintenance: If you modify code in this folder, update this README to reflect the changes. If you notice the README content does not match the current code, automatically update the README to match the code.