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

Method Write

csharp/src/Fory/AnySerializer.cs:45–78  ·  view source on GitHub ↗
(WriteContext context, in object? value, RefMode refMode, bool writeTypeInfo, bool hasGenerics)

Source from the content-addressed store, hash-verified

43 }
44
45 public override void Write(WriteContext context, in object? value, RefMode refMode, bool writeTypeInfo, bool hasGenerics)
46 {
47 if (refMode != RefMode.None)
48 {
49 if (value is null)
50 {
51 context.Writer.WriteInt8((sbyte)RefFlag.Null);
52 return;
53 }
54
55 bool wroteTrackingRefFlag = false;
56 if (refMode == RefMode.Tracking && AnyValueIsRefType(value!, context.TypeResolver))
57 {
58 if (context.RefWriter.TryWriteRef(context.Writer, value!))
59 {
60 return;
61 }
62
63 wroteTrackingRefFlag = true;
64 }
65
66 if (!wroteTrackingRefFlag)
67 {
68 context.Writer.WriteInt8((sbyte)RefFlag.NotNullValue);
69 }
70 }
71
72 if (writeTypeInfo)
73 {
74 DynamicAnyCodec.WriteAnyTypeInfo(value!, context);
75 }
76
77 WriteData(context, value, hasGenerics);
78 }
79
80 public override object? Read(ReadContext context, RefMode refMode, bool readTypeInfo)
81 {

Callers

nothing calls this directly

Calls 3

WriteAnyTypeInfoMethod · 0.80
WriteInt8Method · 0.45
TryWriteRefMethod · 0.45

Tested by

no test coverage detected