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)
| 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"/>. |
nothing calls this directly
no test coverage detected