Files
james gilles c65fc311b0 Add internal docs for C# bindings packages (#2938)
# 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>
2026-04-15 14:16:43 +00:00

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 the FFI upon 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 the FFI upon 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.