SpacetimeDB icon indicating copy to clipboard operation
SpacetimeDB copied to clipboard

[C#] NFC: split out IStructuralWrite interface

Open RReverser opened this issue 1 year ago • 1 comments

Structural read implementation can be only directly implemented on types with default constructors, but writing should not have such limitations.

In this PR I'm splitting out writing into its own interface, so that it can be implemented even on types like tagged enums, which simplifies their own BSATN.Write implementation and allows to use them with helpers like ToBytes.

I'm also making the generated tagged enum record abstract - which it, arguably, should've been from the beginning - but it should be a non-functional change because its constructor has always been private anyway.

Description of Changes

Please describe your change, mention any related tickets, and so on here.

API and ABI breaking changes

If this is an API or ABI breaking change, please apply the corresponding GitHub label.

Expected complexity level and risk

How complicated do you think these changes are? Grade on a scale from 1 to 5, where 1 is a trivial change, and 5 is a deep-reaching and complex change.

This complexity rating applies not only to the complexity apparent in the diff, but also to its interactions with existing and future code.

If you answered more than a 2, explain what is complex about the PR, and what other components it interacts with in potentially concerning ways.

Testing

Describe any testing you've done, and any testing you'd like your reviewers to do, so that you're confident that all the changes work as expected!

  • [x] Write a test you've completed here.
  • [ ] Write a test you want a reviewer to do here, so they can check it off when they're satisfied.

RReverser avatar Sep 18 '24 00:09 RReverser

CLA assistant check
All committers have signed the CLA.

CLAassistant avatar May 03 '25 18:05 CLAassistant