| File: System\Runtime\Serialization\Json\JsonFormatGeneratorStatics.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; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Reflection; using System.Runtime.Serialization.DataContracts; using System.Runtime.Serialization.Json; using System.Xml; namespace System.Runtime.Serialization { public static class JsonFormatGeneratorStatics { private static MethodInfo? s_boxPointer; private static PropertyInfo? s_collectionItemNameProperty; private static MethodInfo? s_getItemContractMethod; private static MethodInfo? s_getJsonDataContractMethod; private static MethodInfo? s_getJsonMemberIndexMethod; private static MethodInfo? s_getRevisedItemContractMethod; private static MethodInfo? s_getUninitializedObjectMethod; private static MethodInfo? s_ienumeratorGetCurrentMethod; private static MethodInfo? s_ienumeratorMoveNextMethod; private static MethodInfo? s_isStartElementMethod0; private static MethodInfo? s_isStartElementMethod2; private static PropertyInfo? s_localNameProperty; private static PropertyInfo? s_namespaceProperty; private static MethodInfo? s_moveToContentMethod; private static PropertyInfo? s_nodeTypeProperty; private static MethodInfo? s_onDeserializationMethod; private static MethodInfo? s_readJsonValueMethod; private static ConstructorInfo? s_serializationExceptionCtor; private static MethodInfo? s_throwDuplicateMemberExceptionMethod; private static MethodInfo? s_throwMissingRequiredMembersMethod; private static PropertyInfo? s_typeHandleProperty; private static MethodInfo? s_unboxPointer; private static PropertyInfo? s_useSimpleDictionaryFormatReadProperty; private static PropertyInfo? s_useSimpleDictionaryFormatWriteProperty; private static MethodInfo? s_writeAttributeStringMethod; private static MethodInfo? s_writeEndElementMethod; private static MethodInfo? s_writeJsonISerializableMethod; private static MethodInfo? s_writeJsonNameWithMappingMethod; private static MethodInfo? s_writeJsonValueMethod; private static MethodInfo? s_writeStartElementMethod; private static MethodInfo? s_writeStartElementStringMethod; private static MethodInfo? s_parseEnumMethod; private static MethodInfo? s_getJsonMemberNameMethod; public static MethodInfo BoxPointer { get { if (s_boxPointer == null) { s_boxPointer = typeof(Pointer).GetMethod("Box"); Debug.Assert(s_boxPointer != null); } return s_boxPointer; } } public static PropertyInfo CollectionItemNameProperty { get { if (s_collectionItemNameProperty == null) { s_collectionItemNameProperty = typeof(XmlObjectSerializerWriteContextComplexJson).GetProperty("CollectionItemName", Globals.ScanAllMembers); Debug.Assert(s_collectionItemNameProperty != null); } return s_collectionItemNameProperty; } } public static ConstructorInfo ExtensionDataObjectCtor => field ??= typeof(ExtensionDataObject).GetConstructor(Globals.ScanAllMembers, Type.EmptyTypes)!; public static PropertyInfo ExtensionDataProperty => field ??= typeof(IExtensibleDataObject).GetProperty("ExtensionData")!; public static MethodInfo GetCurrentMethod { get { if (s_ienumeratorGetCurrentMethod == null) { s_ienumeratorGetCurrentMethod = typeof(IEnumerator).GetProperty("Current")!.GetGetMethod(); Debug.Assert(s_ienumeratorGetCurrentMethod != null); } return s_ienumeratorGetCurrentMethod; } } public static MethodInfo GetItemContractMethod { [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] get { if (s_getItemContractMethod == null) { s_getItemContractMethod = typeof(CollectionDataContract).GetProperty("ItemContract", Globals.ScanAllMembers)!.GetGetMethod(nonPublic: true); Debug.Assert(s_getItemContractMethod != null); } return s_getItemContractMethod; } } public static MethodInfo GetJsonDataContractMethod { [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] get { if (s_getJsonDataContractMethod == null) { s_getJsonDataContractMethod = typeof(JsonDataContract).GetMethod("GetJsonDataContract", Globals.ScanAllMembers); Debug.Assert(s_getJsonDataContractMethod != null); } return s_getJsonDataContractMethod; } } public static MethodInfo GetJsonMemberIndexMethod { [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] get { if (s_getJsonMemberIndexMethod == null) { s_getJsonMemberIndexMethod = typeof(XmlObjectSerializerReadContextComplexJson).GetMethod("GetJsonMemberIndex", Globals.ScanAllMembers); Debug.Assert(s_getJsonMemberIndexMethod != null); } return s_getJsonMemberIndexMethod; } } public static MethodInfo GetRevisedItemContractMethod { [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] get { if (s_getRevisedItemContractMethod == null) { s_getRevisedItemContractMethod = typeof(XmlObjectSerializerWriteContextComplexJson).GetMethod("GetRevisedItemContract", Globals.ScanAllMembers); Debug.Assert(s_getRevisedItemContractMethod != null); } return s_getRevisedItemContractMethod; } } public static MethodInfo GetUninitializedObjectMethod { [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] get { if (s_getUninitializedObjectMethod == null) { s_getUninitializedObjectMethod = typeof(XmlFormatReaderGenerator).GetMethod("UnsafeGetUninitializedObject", Globals.ScanAllMembers, new Type[] { typeof(Type) }); Debug.Assert(s_getUninitializedObjectMethod != null); } return s_getUninitializedObjectMethod; } } public static MethodInfo IsStartElementMethod0 { get { if (s_isStartElementMethod0 == null) { s_isStartElementMethod0 = typeof(XmlReaderDelegator).GetMethod("IsStartElement", Globals.ScanAllMembers, Type.EmptyTypes); Debug.Assert(s_isStartElementMethod0 != null); } return s_isStartElementMethod0; } } public static MethodInfo IsStartElementMethod2 { get { if (s_isStartElementMethod2 == null) { s_isStartElementMethod2 = typeof(XmlReaderDelegator).GetMethod("IsStartElement", Globals.ScanAllMembers, new Type[] { typeof(XmlDictionaryString), typeof(XmlDictionaryString) }); Debug.Assert(s_isStartElementMethod2 != null); } return s_isStartElementMethod2; } } public static PropertyInfo LocalNameProperty { get { if (s_localNameProperty == null) { s_localNameProperty = typeof(XmlReaderDelegator).GetProperty("LocalName", Globals.ScanAllMembers); Debug.Assert(s_localNameProperty != null); } return s_localNameProperty; } } public static PropertyInfo NamespaceProperty { get { if (s_namespaceProperty == null) { s_namespaceProperty = typeof(XmlReaderDelegator).GetProperty("NamespaceProperty", Globals.ScanAllMembers); Debug.Assert(s_namespaceProperty != null); } return s_namespaceProperty; } } public static MethodInfo MoveNextMethod { get { if (s_ienumeratorMoveNextMethod == null) { s_ienumeratorMoveNextMethod = typeof(IEnumerator).GetMethod("MoveNext"); Debug.Assert(s_ienumeratorMoveNextMethod != null); } return s_ienumeratorMoveNextMethod; } } public static MethodInfo MoveToContentMethod { get { if (s_moveToContentMethod == null) { s_moveToContentMethod = typeof(XmlReaderDelegator).GetMethod("MoveToContent", Globals.ScanAllMembers); Debug.Assert(s_moveToContentMethod != null); } return s_moveToContentMethod; } } public static PropertyInfo NodeTypeProperty { get { if (s_nodeTypeProperty == null) { s_nodeTypeProperty = typeof(XmlReaderDelegator).GetProperty("NodeType", Globals.ScanAllMembers); Debug.Assert(s_nodeTypeProperty != null); } return s_nodeTypeProperty; } } public static MethodInfo OnDeserializationMethod { get { if (s_onDeserializationMethod == null) { s_onDeserializationMethod = typeof(IDeserializationCallback).GetMethod("OnDeserialization"); Debug.Assert(s_onDeserializationMethod != null); } return s_onDeserializationMethod; } } public static MethodInfo ReadJsonValueMethod { [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] get { if (s_readJsonValueMethod == null) { s_readJsonValueMethod = typeof(DataContractJsonSerializer).GetMethod("ReadJsonValue", Globals.ScanAllMembers); Debug.Assert(s_readJsonValueMethod != null); } return s_readJsonValueMethod; } } public static ConstructorInfo SerializationExceptionCtor { get { if (s_serializationExceptionCtor == null) { s_serializationExceptionCtor = typeof(SerializationException).GetConstructor(new Type[] { typeof(string) }); Debug.Assert(s_serializationExceptionCtor != null); } return s_serializationExceptionCtor; } } public static Type[] SerInfoCtorArgs => field ??= new Type[] { typeof(SerializationInfo), typeof(StreamingContext) }; public static MethodInfo ThrowDuplicateMemberExceptionMethod { get { if (s_throwDuplicateMemberExceptionMethod == null) { s_throwDuplicateMemberExceptionMethod = typeof(XmlObjectSerializerReadContextComplexJson).GetMethod("ThrowDuplicateMemberException", Globals.ScanAllMembers); Debug.Assert(s_throwDuplicateMemberExceptionMethod != null); } return s_throwDuplicateMemberExceptionMethod; } } public static MethodInfo ThrowMissingRequiredMembersMethod { get { if (s_throwMissingRequiredMembersMethod == null) { s_throwMissingRequiredMembersMethod = typeof(XmlObjectSerializerReadContextComplexJson).GetMethod("ThrowMissingRequiredMembers", Globals.ScanAllMembers); Debug.Assert(s_throwMissingRequiredMembersMethod != null); } return s_throwMissingRequiredMembersMethod; } } public static PropertyInfo TypeHandleProperty { get { if (s_typeHandleProperty == null) { s_typeHandleProperty = typeof(Type).GetProperty("TypeHandle"); Debug.Assert(s_typeHandleProperty != null); } return s_typeHandleProperty; } } public static MethodInfo UnboxPointer { get { if (s_unboxPointer == null) { s_unboxPointer = typeof(Pointer).GetMethod("Unbox"); Debug.Assert(s_unboxPointer != null); } return s_unboxPointer; } } public static PropertyInfo UseSimpleDictionaryFormatReadProperty { get { if (s_useSimpleDictionaryFormatReadProperty == null) { s_useSimpleDictionaryFormatReadProperty = typeof(XmlObjectSerializerReadContextComplexJson).GetProperty("UseSimpleDictionaryFormat", Globals.ScanAllMembers); Debug.Assert(s_useSimpleDictionaryFormatReadProperty != null); } return s_useSimpleDictionaryFormatReadProperty; } } public static PropertyInfo UseSimpleDictionaryFormatWriteProperty { get { if (s_useSimpleDictionaryFormatWriteProperty == null) { s_useSimpleDictionaryFormatWriteProperty = typeof(XmlObjectSerializerWriteContextComplexJson).GetProperty("UseSimpleDictionaryFormat", Globals.ScanAllMembers); Debug.Assert(s_useSimpleDictionaryFormatWriteProperty != null); } return s_useSimpleDictionaryFormatWriteProperty; } } public static MethodInfo WriteAttributeStringMethod { get { if (s_writeAttributeStringMethod == null) { s_writeAttributeStringMethod = typeof(XmlWriterDelegator).GetMethod("WriteAttributeString", Globals.ScanAllMembers, new Type[] { typeof(string), typeof(string), typeof(string), typeof(string) }); Debug.Assert(s_writeAttributeStringMethod != null); } return s_writeAttributeStringMethod; } } public static MethodInfo WriteEndElementMethod { get { if (s_writeEndElementMethod == null) { s_writeEndElementMethod = typeof(XmlWriterDelegator).GetMethod("WriteEndElement", Globals.ScanAllMembers, Type.EmptyTypes); Debug.Assert(s_writeEndElementMethod != null); } return s_writeEndElementMethod; } } public static MethodInfo WriteJsonISerializableMethod { [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] get { if (s_writeJsonISerializableMethod == null) { s_writeJsonISerializableMethod = typeof(XmlObjectSerializerWriteContextComplexJson).GetMethod("WriteJsonISerializable", Globals.ScanAllMembers); Debug.Assert(s_writeJsonISerializableMethod != null); } return s_writeJsonISerializableMethod; } } public static MethodInfo WriteJsonNameWithMappingMethod { get { if (s_writeJsonNameWithMappingMethod == null) { s_writeJsonNameWithMappingMethod = typeof(XmlObjectSerializerWriteContextComplexJson).GetMethod("WriteJsonNameWithMapping", Globals.ScanAllMembers); Debug.Assert(s_writeJsonNameWithMappingMethod != null); } return s_writeJsonNameWithMappingMethod; } } public static MethodInfo WriteJsonValueMethod { [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] get { if (s_writeJsonValueMethod == null) { s_writeJsonValueMethod = typeof(DataContractJsonSerializer).GetMethod("WriteJsonValue", Globals.ScanAllMembers); Debug.Assert(s_writeJsonValueMethod != null); } return s_writeJsonValueMethod; } } public static MethodInfo WriteStartElementMethod { get { if (s_writeStartElementMethod == null) { s_writeStartElementMethod = typeof(XmlWriterDelegator).GetMethod("WriteStartElement", Globals.ScanAllMembers, new Type[] { typeof(XmlDictionaryString), typeof(XmlDictionaryString) }); Debug.Assert(s_writeStartElementMethod != null); } return s_writeStartElementMethod; } } public static MethodInfo WriteStartElementStringMethod { get { if (s_writeStartElementStringMethod == null) { s_writeStartElementStringMethod = typeof(XmlWriterDelegator).GetMethod("WriteStartElement", Globals.ScanAllMembers, new Type[] { typeof(string), typeof(string) }); Debug.Assert(s_writeStartElementStringMethod != null); } return s_writeStartElementStringMethod; } } public static MethodInfo ParseEnumMethod { get { if (s_parseEnumMethod == null) { s_parseEnumMethod = typeof(Enum).GetMethod("Parse", BindingFlags.Static | BindingFlags.Public, new Type[] { typeof(Type), typeof(string) }); Debug.Assert(s_parseEnumMethod != null); } return s_parseEnumMethod; } } public static MethodInfo GetJsonMemberNameMethod { get { if (s_getJsonMemberNameMethod == null) { s_getJsonMemberNameMethod = typeof(XmlObjectSerializerReadContextComplexJson).GetMethod("GetJsonMemberName", Globals.ScanAllMembers, new Type[] { typeof(XmlReaderDelegator) }); Debug.Assert(s_getJsonMemberNameMethod != null); } return s_getJsonMemberNameMethod; } } } }