Farious.CodeBakers.Common
0.1.1
dotnet add package Farious.CodeBakers.Common --version 0.1.1
NuGet\Install-Package Farious.CodeBakers.Common -Version 0.1.1
<PackageReference Include="Farious.CodeBakers.Common" Version="0.1.1" />
<PackageVersion Include="Farious.CodeBakers.Common" Version="0.1.1" />
<PackageReference Include="Farious.CodeBakers.Common" />
paket add Farious.CodeBakers.Common --version 0.1.1
#r "nuget: Farious.CodeBakers.Common, 0.1.1"
#:package Farious.CodeBakers.Common@0.1.1
#addin nuget:?package=Farious.CodeBakers.Common&version=0.1.1
#tool nuget:?package=Farious.CodeBakers.Common&version=0.1.1
Farious.CodeBakers
Runtime library and Roslyn source generator for reflection-based factories and optimized Newtonsoft.Json converters.
Generates lookup tables and converter routing at compile time. The current runtime still uses reflection-based cache discovery as a compatibility fallback; planned registration work will remove that from the normal startup path.
Package split
Farious.CodeBakers.Common- shared runtime types used by Unity and .NET server packages.Farious.CodeBakers.Server- .NET NuGet package that references common runtime and bundles the Roslyn analyzer.UnityPackage/- Unity UPM package with the common runtime source and pre-built analyzer DLL. It declares the Unitycom.unity.nuget.newtonsoft-jsondependency.
Package versions are owned by UnityPackage/package.json. Released NuGet packages and the UPM tag v<version> must
use that same value. The concrete versions below are install examples, not separate version authorities.
Installation
For .NET server projects:
<PackageReference Include="Farious.CodeBakers.Server" Version="0.1.0" />
One reference gives you both the common runtime library and the Roslyn analyzer.
Migration Notes
| Consumer | Reference |
|---|---|
| Unity asmdef that needs runtime attributes or generated converters | UPM package plus asmdef reference to com.farious.codebakers.common |
| .NET shared contract assembly that only needs attributes/runtime types | Farious.CodeBakers.Common |
| .NET app or library assembly that needs generated output | Farious.CodeBakers.Server |
Existing Unity consumers that referenced com.farious.reflectionbakers.runtime or
com.farious.reflectionbakers.common must retarget those asmdef references to com.farious.codebakers.common.
Generated code is emitted into the consuming compilation. Shared DTO or contract assemblies should reference
Farious.CodeBakers.Common and should not reference Farious.CodeBakers.Server unless that assembly needs
generated output itself.
Features
- ReflectionFactory - compile-time generated factory caches mapping types to producers; no
Activator.CreateInstanceper factory call. - ConvertersRouter - Newtonsoft.Json converter dispatcher with compile-time generated routing.
- Attribute-driven - mark types with
[Produces]and[RegisterConverter]; the generator does the rest.
Diagnostics
Generator diagnostics use the RBxxxx id range, category CodeBakers, and are emitted as build diagnostics.
Current blocking errors:
RB0002- unsupported dictionary key type. Generated dictionary converters currently supportstring,int, and enum keys.RB0003- ambiguous factory constructor. A produced type has multiple public constructors; mark the intended one with[FactoryConstructor].RB0004- no usable factory constructor. A produced type has no public constructor usable byReflectionFactory.
Reserved descriptor:
RB0007- generated source-name collision. The descriptor exists for deterministic source-name collision reporting, but explicit generator enforcement is not wired yet.
Usage
ReflectionFactory
[Produces(typeof(CatProcessor))]
public class Cat : Animal { ... }
[Produces(typeof(DogProcessor))]
public class Dog : Animal { ... }
public class CatProcessor : IProcessor<Animal> { ... }
public class DogProcessor : IProcessor<Animal> { ... }
// Generated cache lookup.
var factory = new ReflectionFactory<Animal, IProcessor<Animal>>();
IProcessor<Animal> processor = factory.Produce(new Cat());
ConvertersRouter
[RegisterConverter(typeof(MyType))]
public class MyTypeConverter : JsonConverter<MyType> { ... }
// Generated router wires all [RegisterConverter] converters automatically.
var settings = new JsonSerializerSettings();
settings.Converters.Add(new ConvertersRouter());
string json = JsonConvert.SerializeObject(obj, settings);
Unity (UPM)
Add to manifest.json:
"com.farious.codebakers": "https://gitlab.com/farious-games/roslyngenerators.git?path=UnityPackage#v0.1.0"
The UPM package ships Farious.CodeBakers.Generator.dll with the RoslynAnalyzer label so Unity picks it up
automatically.
The legacy Farious.ReflectionBakers namespace remains available as obsolete compatibility wrappers for existing
source consumers. New code and generated code should use Farious.CodeBakers.
License
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Newtonsoft.Json (>= 13.0.3)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Farious.CodeBakers.Common:
| Package | Downloads |
|---|---|
|
Farious.CodeBakers.Server
.NET server package for Farious reflection source generators. References the common runtime and bundles the analyzer. |
GitHub repositories
This package is not used by any popular GitHub repositories.