# ReferencedObjectCollection Methods

[Type overview](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.session.referencedobjectcollection/)

## CopyIdTable {#copyidtable-57d48a34}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.session.referencedobjectcollection/methods/copyidtable-57d48a34/)

[Source](https://github.com/dotnet/orleans/blob/e4e752cedecc2976811db49802c7a999b1f1c704/src/Orleans.Serialization/Session/ReferencedObjectCollection.cs#L294)

```csharp
public Dictionary<object, uint> CopyIdTable()
```

Copies the identifier table.

### Returns

A copy of the identifier table.

## CopyReferenceTable {#copyreferencetable-356f3ff4}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.session.referencedobjectcollection/methods/copyreferencetable-356f3ff4/)

[Source](https://github.com/dotnet/orleans/blob/e4e752cedecc2976811db49802c7a999b1f1c704/src/Orleans.Serialization/Session/ReferencedObjectCollection.cs#L288)

```csharp
public Dictionary<uint, object> CopyReferenceTable()
```

Copies the reference table.

### Returns

A copy of the reference table.

## GetOrAddReference(object, uint) {#getoraddreference-object-out-uint-0e28b749}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.session.referencedobjectcollection/methods/getoraddreference-object-out-uint-0e28b749/)

[Source](https://github.com/dotnet/orleans/blob/e4e752cedecc2976811db49802c7a999b1f1c704/src/Orleans.Serialization/Session/ReferencedObjectCollection.cs#L85-L147)

```csharp
public bool GetOrAddReference(object value, out uint reference)
```

Gets or adds a reference.

### Parameters

- `value` (`object`): The value.
- `reference` (`uint`): The reference.

### Returns

`true` if a reference already existed, `false` otherwise.

## GetReferenceIndex(object) {#getreferenceindex-object-dbf37eb7}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.session.referencedobjectcollection/methods/getreferenceindex-object-dbf37eb7/)

[Source](https://github.com/dotnet/orleans/blob/e4e752cedecc2976811db49802c7a999b1f1c704/src/Orleans.Serialization/Session/ReferencedObjectCollection.cs#L158-L172)

```csharp
public int GetReferenceIndex(object value)
```

Gets the index of the reference, or `-1` if the object has not been encountered before.

### Parameters

- `value` (`object`): The value.

### Returns

The index of the reference, or `-1` if the object has not been encountered before.

## MarkValueField {#markvaluefield-51c53729}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.session.referencedobjectcollection/methods/markvaluefield-51c53729/)

[Source](https://github.com/dotnet/orleans/blob/e4e752cedecc2976811db49802c7a999b1f1c704/src/Orleans.Serialization/Session/ReferencedObjectCollection.cs#L71)

```csharp
public void MarkValueField()
```

Marks a value field.

## RecordReferenceField(object) {#recordreferencefield-object-baafa967}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.session.referencedobjectcollection/methods/recordreferencefield-object-baafa967/)

[Source](https://github.com/dotnet/orleans/blob/e4e752cedecc2976811db49802c7a999b1f1c704/src/Orleans.Serialization/Session/ReferencedObjectCollection.cs#L266)

```csharp
public void RecordReferenceField(object value)
```

Records a reference field.

### Parameters

- `value` (`object`): The value.

## RecordReferenceField(object, uint) {#recordreferencefield-object-uint-4a99456b}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.session.referencedobjectcollection/methods/recordreferencefield-object-uint-4a99456b/)

[Source](https://github.com/dotnet/orleans/blob/e4e752cedecc2976811db49802c7a999b1f1c704/src/Orleans.Serialization/Session/ReferencedObjectCollection.cs#L276-L282)

```csharp
public void RecordReferenceField(object value, uint referenceId)
```

Records a reference field with the specified identifier.

### Parameters

- `value` (`object`): The value.
- `referenceId` (`uint`): The reference identifier.

## Reset {#reset-4f71f378}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.session.referencedobjectcollection/methods/reset-4f71f378/)

[Source](https://github.com/dotnet/orleans/blob/e4e752cedecc2976811db49802c7a999b1f1c704/src/Orleans.Serialization/Session/ReferencedObjectCollection.cs#L308-L317)

```csharp
public void Reset()
```

Resets this instance.

## TryGetReferencedObject(uint) {#trygetreferencedobject-uint-79521446}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.session.referencedobjectcollection/methods/trygetreferencedobject-uint-79521446/)

[Source](https://github.com/dotnet/orleans/blob/e4e752cedecc2976811db49802c7a999b1f1c704/src/Orleans.Serialization/Session/ReferencedObjectCollection.cs#L54-L64)

```csharp
public object TryGetReferencedObject(uint reference)
```

Tries to get the referenced object with the specified id.

### Parameters

- `reference` (`uint`): The reference.

### Returns

The referenced object with the specified id if found, `null` otherwise.
