Files
Dec2017-Script-Dump/UnityEngine/Serialization/DictionarySerializationSurrogate.cs
2026-06-04 11:42:34 +02:00

37 lines
1.3 KiB
C#

using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
namespace UnityEngine.Serialization
{
// Token: 0x020004EF RID: 1263
internal class DictionarySerializationSurrogate<TKey, TValue> : ISerializationSurrogate
{
// Token: 0x06003C32 RID: 15410 RVA: 0x0006A070 File Offset: 0x00068270
public void GetObjectData(object obj, SerializationInfo info, StreamingContext context)
{
Dictionary<TKey, TValue> dictionary = (Dictionary<TKey, TValue>)obj;
dictionary.GetObjectData(info, context);
}
// Token: 0x06003C33 RID: 15411 RVA: 0x0006A090 File Offset: 0x00068290
public object SetObjectData(object obj, SerializationInfo info, StreamingContext context, ISurrogateSelector selector)
{
IEqualityComparer<TKey> equalityComparer = (IEqualityComparer<TKey>)info.GetValue("Comparer", typeof(IEqualityComparer<TKey>));
Dictionary<TKey, TValue> dictionary = new Dictionary<TKey, TValue>(equalityComparer);
if (info.MemberCount > 3)
{
KeyValuePair<TKey, TValue>[] array = (KeyValuePair<TKey, TValue>[])info.GetValue("KeyValuePairs", typeof(KeyValuePair<TKey, TValue>[]));
if (array != null)
{
foreach (KeyValuePair<TKey, TValue> keyValuePair in array)
{
dictionary.Add(keyValuePair.Key, keyValuePair.Value);
}
}
}
return dictionary;
}
}
}