| File: System\Runtime\Serialization\ScopedKnownTypes.cs | Web Access |
| Project: src\runtime\src\libraries\System.Private.DataContractSerialization\src\System.Private.DataContractSerialization.csproj (System.Private.DataContractSerialization) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using System.Runtime.Serialization.DataContracts; using System.Xml; using DataContractDictionary = System.Collections.Generic.Dictionary<System.Xml.XmlQualifiedName, System.Runtime.Serialization.DataContracts.DataContract>; namespace System.Runtime.Serialization { internal struct ScopedKnownTypes { internal DataContractDictionary[] dataContractDictionaries; private int _count; internal void Push(DataContractDictionary dataContractDictionary) { if (dataContractDictionaries == null) { dataContractDictionaries = new DataContractDictionary[4]; } else if (_count == dataContractDictionaries.Length) { Array.Resize<DataContractDictionary>(ref dataContractDictionaries, dataContractDictionaries.Length * 2); } dataContractDictionaries[_count++] = dataContractDictionary; } internal void Pop() { _count--; } internal DataContract? GetDataContract(XmlQualifiedName qname) { for (int i = (_count - 1); i >= 0; i--) { DataContractDictionary dataContractDictionary = dataContractDictionaries[i]; DataContract? dataContract; if (dataContractDictionary.TryGetValue(qname, out dataContract)) return dataContract; } return null; } } }