Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ DeserializeTableData()

void System.Data.DataTable.DeserializeTableData ( SerializationInfo info,
StreamingContext context,
int serIndex )
inlinepackageinherited

Definition at line 1577 of file DataTable.cs.

1578 {
1580 bool inDataLoad = _inDataLoad;
1581 try
1582 {
1583 _enforceConstraints = false;
1584 _inDataLoad = true;
1586 int @int = info.GetInt32(string.Format(invariantCulture, "DataTable_{0}.Rows.Count", serIndex));
1587 int int2 = info.GetInt32(string.Format(invariantCulture, "DataTable_{0}.Records.Count", serIndex));
1588 BitArray bitArray = (BitArray)info.GetValue(string.Format(invariantCulture, "DataTable_{0}.RowStates", serIndex), typeof(BitArray));
1589 ArrayList arrayList = (ArrayList)info.GetValue(string.Format(invariantCulture, "DataTable_{0}.Records", serIndex), typeof(ArrayList));
1590 ArrayList arrayList2 = (ArrayList)info.GetValue(string.Format(invariantCulture, "DataTable_{0}.NullBits", serIndex), typeof(ArrayList));
1591 Hashtable hashtable = (Hashtable)info.GetValue(string.Format(invariantCulture, "DataTable_{0}.RowErrors", serIndex), typeof(Hashtable));
1592 hashtable.OnDeserialization(this);
1593 Hashtable hashtable2 = (Hashtable)info.GetValue(string.Format(invariantCulture, "DataTable_{0}.ColumnErrors", serIndex), typeof(Hashtable));
1595 if (int2 <= 0)
1596 {
1597 return;
1598 }
1599 for (int i = 0; i < Columns.Count; i++)
1600 {
1601 Columns[i].SetStorage(arrayList[i], (BitArray)arrayList2[i]);
1602 }
1603 int num = 0;
1604 DataRow[] array = new DataRow[int2];
1605 for (int j = 0; j < @int; j++)
1606 {
1607 DataRow dataRow = (array[num] = NewEmptyRow());
1608 int num2 = j * 3;
1610 {
1611 case DataRowState.Unchanged:
1612 dataRow._oldRecord = num;
1613 dataRow._newRecord = num;
1614 num++;
1615 break;
1616 case DataRowState.Added:
1617 dataRow._oldRecord = -1;
1618 dataRow._newRecord = num;
1619 num++;
1620 break;
1621 case DataRowState.Modified:
1622 dataRow._oldRecord = num;
1623 dataRow._newRecord = num + 1;
1624 array[num + 1] = dataRow;
1625 num += 2;
1626 break;
1627 case DataRowState.Deleted:
1628 dataRow._oldRecord = num;
1629 dataRow._newRecord = -1;
1630 num++;
1631 break;
1632 }
1633 if (bitArray[num2 + 2])
1634 {
1635 dataRow._tempRecord = num;
1636 array[num] = dataRow;
1637 num++;
1638 }
1639 else
1640 {
1642 }
1645 _nextRowID++;
1646 ConvertToRowError(j, hashtable, hashtable2);
1647 }
1649 ResetIndexes();
1650 }
1651 finally
1652 {
1655 }
1656 }
virtual void OnDeserialization(object? sender)
virtual void OnDeserialization(object? sender)
DataRowCollection Rows
Definition DataTable.cs:701
DataColumnCollection Columns
Definition DataTable.cs:327
DataRowState ConvertToRowState(BitArray bitStates, int bitIndex)
void ConvertToRowError(int rowIndex, Hashtable rowErrors, Hashtable colErrors)
readonly RecordManager _recordManager
Definition DataTable.cs:74
void SetRowCache(DataRow[] newRows)
static CultureInfo InvariantCulture

References System.Data.DataTable._enforceConstraints, System.Data.DataTable._inDataLoad, System.Data.DataTable._nextRowID, System.Data.DataTable._recordManager, System.array, System.Data.DataRowCollection.ArrayAdd(), System.Data.DataTable.Columns, System.Data.DataTable.ConvertToRowError(), System.Data.DataTable.ConvertToRowState(), System.Data.InternalDataCollectionBase.Count, System.Runtime.Serialization.Dictionary, System.Format, System.info, System.Globalization.CultureInfo.InvariantCulture, System.Data.DataTable.NewEmptyRow(), System.Collections.Generic.Dictionary< TKey, TValue >.OnDeserialization(), System.Collections.Hashtable.OnDeserialization(), System.Data.DataTable.ResetIndexes(), System.Data.DataTable.Rows, and System.Data.RecordManager.SetRowCache().

Referenced by System.Data.DataTable.DeserializeDataTable().