Zum Inhalt

Felder bauen

Die Dokumenttypen sind generierte Protobuf-Typen. Skalare Felder sind dort keine einfachen Werte, sondern Wrapper (StringField, BoolField, Int32Field, …). Kurzkonstruktoren dafür stehen in Zedal.Sdk.Protobuf.ProtoFields:

Helfer Für
Sf(string) StringField
Bf(bool) BoolField
I32(int) / I64(long) Int32Field / Int64Field
Df(double) DoubleField
DateUtc(y, m, d) Datum als TimestampField
DateTimeUtc(y, m, d, h, min, s) Zeitstempel als TimestampField

Für kontrollierte Wertelisten gibt es typisierte Enums in Zedal.Sdk.Apis.Diwass.Enums — unter anderem AttachmentTypeId, PackageTypeCode, RecoveryDisposalCode, HCode, HpCode, WasteCodeListId, MeansOfTransportCode, FacilityTypeCode, Annex7FacilityTypeCode. Jeder Enum-Wert trägt seinen Wire-Wert als Attribut; die Umrechnung machen die Erweiterungsmethoden in DiwassEnumExtensions:

string wire = AttachmentTypeId.FacilityPermit.ToWire();

if (DiwassEnumExtensions.TryFromWire<AttachmentTypeId>(raw, out var typeId)) { /* … */ }

var lenient = DiwassEnumExtensions.FromWireOrUnknown<AttachmentTypeId>(raw);

Jeder dieser Enums hat einen Unknown-Wert als Fallback für Wire-Werte, die das SDK noch nicht kennt. Auf Lese-Pfaden ist das gewollt: Ein neuer Serverwert führt nicht zum Absturz. Auf Schreib-Pfaden ist Unknown ein Fehler in deinen Daten. Die fachlichen Wertelisten stehen unter Codelisten.