MCPcopy Create free account
hub / github.com/apache/fory / Write

Method Write

csharp/src/Fory/Serializer.cs:56–90  ·  view source on GitHub ↗

Writes ref metadata and optional type metadata, then delegates to . Write context. Value to write. Ref handling mode. Whether type metadata should be written. Whether generic type metadata is present for th

(WriteContext context, in T value, RefMode refMode, bool writeTypeInfo, bool hasGenerics)

Source from the content-addressed store, hash-verified

54 /// <param name="writeTypeInfo">Whether type metadata should be written.</param>
55 /// <param name="hasGenerics">Whether generic type metadata is present for the current field path.</param>
56 public virtual void Write(WriteContext context, in T value, RefMode refMode, bool writeTypeInfo, bool hasGenerics)
57 {
58 if (refMode != RefMode.None)
59 {
60 bool wroteTrackingRefFlag = false;
61 if (refMode == RefMode.Tracking &&
62 value is object obj)
63 {
64 if (context.RefWriter.TryWriteRef(context.Writer, obj))
65 {
66 return;
67 }
68
69 wroteTrackingRefFlag = true;
70 }
71
72 if (!wroteTrackingRefFlag)
73 {
74 if (value is null)
75 {
76 context.Writer.WriteInt8((sbyte)RefFlag.Null);
77 return;
78 }
79
80 context.Writer.WriteInt8((sbyte)RefFlag.NotNullValue);
81 }
82 }
83
84 if (writeTypeInfo)
85 {
86 context.TypeResolver.WriteTypeInfo(this, context);
87 }
88
89 WriteData(context, value, hasGenerics);
90 }
91
92 /// <summary>
93 /// Reads ref metadata and optional type metadata, then delegates to <see cref="ReadData"/>.

Callers

nothing calls this directly

Calls 3

TryWriteRefMethod · 0.45
WriteInt8Method · 0.45
WriteTypeInfoMethod · 0.45

Tested by

no test coverage detected