# SurrogateCodec&lt;TField, TSurrogate, TConverter&gt;

Package: [Microsoft.Orleans.Serialization](/orleans/docs/api/csharp/microsoft.orleans.serialization/) 10.0.0

[NuGet package](https://www.nuget.org/packages/Microsoft.Orleans.Serialization) | [Source](https://github.com/dotnet/orleans/blob/e4e752cedecc2976811db49802c7a999b1f1c704/src/Orleans.Serialization/Serializers/SurrogateCodec.cs#L18)

```csharp
public sealed class SurrogateCodec<TField, TSurrogate, TConverter> : IBaseCopier, IBaseCopier<TField>, IDeepCopier, IDeepCopier<TField>, IFieldCodec, IFieldCodec<TField>, IBaseCodec, IBaseCodec<TField>
    where TField : class
    where TSurrogate : struct
    where TConverter : Orleans.IConverter<TField, TSurrogate>
```

Surrogate serializer for `TField`.

## Type parameters

- `TConverter`: The converter type which converts between `TField` and `TSurrogate`.
- `TField`: The type which the implementation of this class supports.
- `TSurrogate`: The surrogate type serialized in place of `TField`.

## Constructors

- [SurrogateCodec&lt;TField, TSurrogate, TConverter&gt;(IValueSerializer&lt;TSurrogate&gt;, IDeepCopier&lt;TSurrogate&gt;, TConverter)](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.serializers.surrogatecodec-3/constructors/constructor-orleans-serialization-serializers-ivalueserializer-tsurrogate-orlean-008cfcd2/)

## Methods

- [DeepCopy(TField, CopyContext)](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.serializers.surrogatecodec-3/methods/deepcopy-tfield-orleans-serialization-cloning-copycontext-9455d7f5/)
- [DeepCopy(TField, TField, CopyContext)](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.serializers.surrogatecodec-3/methods/deepcopy-tfield-tfield-orleans-serialization-cloning-copycontext-b8546d3c/)
- [Deserialize(Reader&lt;TInput&gt;, TField)](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.serializers.surrogatecodec-3/methods/deserialize-1-ref-orleans-serialization-buffers-reader-tinput-tfield-153b6dbc/)
- [ReadValue(Reader&lt;TInput&gt;, Field)](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.serializers.surrogatecodec-3/methods/readvalue-1-ref-orleans-serialization-buffers-reader-tinput-orleans-serializatio-949a718f/)
- [Serialize(Writer&lt;TBufferWriter&gt;, TField)](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.serializers.surrogatecodec-3/methods/serialize-1-ref-orleans-serialization-buffers-writer-tbufferwriter-tfield-303e11df/)
- [WriteField(Writer&lt;TBufferWriter&gt;, uint, Type, TField)](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.serializers.surrogatecodec-3/methods/writefield-1-ref-orleans-serialization-buffers-writer-tbufferwriter-uint-system-db24aacf/)
