# ReferenceCodec.TryWriteReferenceField(Writer&lt;TBufferWriter&gt;, uint, Type, object)

[Type overview](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.codecs.referencecodec/) | [Methods](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.codecs.referencecodec/methods/)

[Source](https://github.com/dotnet/orleans/blob/e4e752cedecc2976811db49802c7a999b1f1c704/src/Orleans.Serialization/Codecs/ReferenceCodec.cs#L56-L63)

```csharp
public static bool TryWriteReferenceField<TBufferWriter>(ref Writer<TBufferWriter> writer, uint fieldId, Type expectedType, object value)
```

Write an object reference if `value` has already been written and has been tracked via [ReferenceCodec](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.codecs.referencecodec/).

### Parameters

- `writer` (`Writer<TBufferWriter>`): The writer.
- `fieldId` (`uint`): The field identifier.
- `expectedType` (`Type`): The expected type.
- `value` (`object`): The value.

### Returns

`true` if a reference was written, `false` otherwise.
