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

[Type overview](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.serializers.surrogatecodec-3/)

## DeepCopy(TField, CopyContext) {#deepcopy-tfield-orleans-serialization-cloning-copycontext-9455d7f5}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.serializers.surrogatecodec-3/methods/deepcopy-tfield-orleans-serialization-cloning-copycontext-9455d7f5/)

[Source](https://github.com/dotnet/orleans/blob/e4e752cedecc2976811db49802c7a999b1f1c704/src/Orleans.Serialization/Serializers/SurrogateCodec.cs#L50-L60)

```csharp
public TField SurrogateCodec<TField, TSurrogate, DeepCopy(TField input, CopyContext context)
```

Creates a deep copy of the provided input.

### Parameters

- `input` (`TField`): The input.
- `context` (`CopyContext`): The context.

### Returns

A copy of `input`.

## DeepCopy(TField, TField, CopyContext) {#deepcopy-tfield-tfield-orleans-serialization-cloning-copycontext-b8546d3c}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.serializers.surrogatecodec-3/methods/deepcopy-tfield-tfield-orleans-serialization-cloning-copycontext-b8546d3c/)

[Source](https://github.com/dotnet/orleans/blob/e4e752cedecc2976811db49802c7a999b1f1c704/src/Orleans.Serialization/Serializers/SurrogateCodec.cs#L141-L146)

```csharp
public void SurrogateCodec<TField, TSurrogate, DeepCopy(TField input, TField output, CopyContext context)
```

Clones members from `input` and copies them to `output`.

### Parameters

- `input` (`TField`): The input.
- `output` (`TField`): The output.
- `context` (`CopyContext`): The context.

## Deserialize(Reader&lt;TInput&gt;, TField) {#deserialize-1-ref-orleans-serialization-buffers-reader-tinput-tfield-153b6dbc}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.serializers.surrogatecodec-3/methods/deserialize-1-ref-orleans-serialization-buffers-reader-tinput-tfield-153b6dbc/)

[Source](https://github.com/dotnet/orleans/blob/e4e752cedecc2976811db49802c7a999b1f1c704/src/Orleans.Serialization/Serializers/SurrogateCodec.cs#L131-L136)

```csharp
public void SurrogateCodec<TField, TSurrogate, Deserialize<TInput>(ref Reader<TInput> reader, TField value)
```

Deserializes into the provided value.

### Parameters

- `reader` (`Reader<TInput>`): The reader.
- `value` (`TField`): The value.

## ReadValue(Reader&lt;TInput&gt;, Field) {#readvalue-1-ref-orleans-serialization-buffers-reader-tinput-orleans-serializatio-949a718f}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.serializers.surrogatecodec-3/methods/readvalue-1-ref-orleans-serialization-buffers-reader-tinput-orleans-serializatio-949a718f/)

[Source](https://github.com/dotnet/orleans/blob/e4e752cedecc2976811db49802c7a999b1f1c704/src/Orleans.Serialization/Serializers/SurrogateCodec.cs#L66-L93)

```csharp
public TField SurrogateCodec<TField, TSurrogate, ReadValue<TInput>(ref Reader<TInput> reader, Field field)
```

Reads a value.

### Parameters

- `reader` (`Reader<TInput>`): The reader.
- `field` (`Field`): The field.

### Returns

The value.

## Serialize(Writer&lt;TBufferWriter&gt;, TField) {#serialize-1-ref-orleans-serialization-buffers-writer-tbufferwriter-tfield-303e11df}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.serializers.surrogatecodec-3/methods/serialize-1-ref-orleans-serialization-buffers-writer-tbufferwriter-tfield-303e11df/)

[Source](https://github.com/dotnet/orleans/blob/e4e752cedecc2976811db49802c7a999b1f1c704/src/Orleans.Serialization/Serializers/SurrogateCodec.cs#L122-L126)

```csharp
public void SurrogateCodec<TField, TSurrogate, Serialize<TBufferWriter>(ref Writer<TBufferWriter> writer, TField value)
```

Serializes the provided value.

### Parameters

- `writer` (`Writer<TBufferWriter>`): The writer.
- `value` (`TField`): The value.

## WriteField(Writer&lt;TBufferWriter&gt;, uint, Type, TField) {#writefield-1-ref-orleans-serialization-buffers-writer-tbufferwriter-uint-system-db24aacf}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.serializers.surrogatecodec-3/methods/writefield-1-ref-orleans-serialization-buffers-writer-tbufferwriter-uint-system-db24aacf/)

[Source](https://github.com/dotnet/orleans/blob/e4e752cedecc2976811db49802c7a999b1f1c704/src/Orleans.Serialization/Serializers/SurrogateCodec.cs#L99-L115)

```csharp
public void SurrogateCodec<TField, TSurrogate, WriteField<TBufferWriter>(ref Writer<TBufferWriter> writer, uint fieldIdDelta, Type expectedType, TField value)
```

Writes a field.

### Parameters

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