# Description of Changes Adds some docs to the C# bindings packages. # API and ABI breaking changes None # Expected complexity level and risk 0 # Testing N/A --------- Signed-off-by: Tyler Cloutier <cloutiertyler@users.noreply.github.com> Co-authored-by: Tyler Cloutier <cloutiertyler@users.noreply.github.com>
1.5 KiB
⚠️ Internal Project ⚠️
This project is intended for internal use only. It is not stable and may change without notice.
See the C# module library reference for stable, user-facing documentation.
Internal documentation
This project contains Roslyn incremental source generators that augment tables and reducers with static methods for self-describing and registration.
SpacetimeDB modules are compiled to WebAssembly modules that expose a specific interface; see the module ABI reference. This interface is implemented in the generated FFI class; see ../Codegen.Tests/fixtures/server/snapshots/Module#FFI.verified.cs for an example of what this generated code looks like.
The source generators are implemented via several attributes usable in module code:
-
[SpacetimeDB.Table]- generates code to register this table in theFFIupon startup so that they can be enumerated by the__describe_module__FFI API. It implies[SpacetimeDB.Type], so you must not specify both attributes on the same struct. -
[SpacetimeDB.Reducer]- generates code to register a static function as a SpacetimeDB reducer in theFFIupon startup and creates a wrapper that will parse SATS binary blob into individual arguments and invoke the underlying function for the__call_reducer__FFI API.