| File: System\Runtime\Serialization\GenericParameterDataContract.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.Collections.Generic; using System.Diagnostics.CodeAnalysis; namespace System.Runtime.Serialization.DataContracts { internal sealed class GenericParameterDataContract : DataContract { private readonly GenericParameterDataContractCriticalHelper _helper; [RequiresDynamicCode(DataContract.SerializerAOTWarning)] [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] internal GenericParameterDataContract(Type type) : base(new GenericParameterDataContractCriticalHelper(type)) { _helper = (base.Helper as GenericParameterDataContractCriticalHelper)!; } internal int ParameterPosition => _helper.ParameterPosition; public override bool IsBuiltInDataContract => true; private sealed class GenericParameterDataContractCriticalHelper : DataContract.DataContractCriticalHelper { private readonly int _parameterPosition; [RequiresDynamicCode(DataContract.SerializerAOTWarning)] [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] internal GenericParameterDataContractCriticalHelper( [DynamicallyAccessedMembers(ClassDataContract.DataContractPreserveMemberTypes)] Type type) : base(type) { SetDataContractName(DataContract.GetXmlName(type)); _parameterPosition = type.GenericParameterPosition; } internal int ParameterPosition => _parameterPosition; } [RequiresDynamicCode(DataContract.SerializerAOTWarning)] [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] internal override DataContract BindGenericParameters(DataContract[] paramContracts, Dictionary<DataContract, DataContract>? boundContracts = null) { return paramContracts[ParameterPosition]; } } }