-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Closed
Labels
area-Serializationlinkable-frameworkIssues associated with delivering a linker friendly frameworkIssues associated with delivering a linker friendly framework
Milestone
Description
See the test failing here.
fail: [FAIL] DataContractJsonSerializerTests.DCJS_KeyValuePair
info: System.NullReferenceException : Object reference not set to an instance of an object.
info: at System.Runtime.Serialization.ReflectionClassWriter.ResolveAdapterType(Object obj, ClassDataContract classContract)
info: at System.Runtime.Serialization.ReflectionClassWriter.ReflectionWriteClass(XmlWriterDelegator xmlWriter, Object obj, XmlObjectSerializerWriteContext context, ClassDataContract classContract, XmlDictionaryString[] memberNames)
info: at System.Runtime.Serialization.Json.ReflectionJsonFormatWriter.ReflectionWriteClass(XmlWriterDelegator xmlWriter, Object obj, XmlObjectSerializerWriteContextComplexJson context, ClassDataContract classContract, XmlDictionaryString[] memberNames)
info: at System.Runtime.Serialization.Json.JsonClassDataContract.WriteJsonValueCore(XmlWriterDelegator jsonWriter, Object obj, XmlObjectSerializerWriteContextComplexJson context, RuntimeTypeHandle declaredTypeHandle)
info: at System.Runtime.Serialization.Json.JsonDataContract.WriteJsonValue(XmlWriterDelegator jsonWriter, Object obj, XmlObjectSerializerWriteContextComplexJson context, RuntimeTypeHandle declaredTypeHandle)
info: at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.WriteJsonValue(JsonDataContract contract, XmlWriterDelegator writer, Object graph, XmlObjectSerializerWriteContextComplexJson context, RuntimeTypeHandle declaredTypeHandle)
info: at System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.WriteDataContractValue(DataContract dataContract, XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle declaredTypeHandle)
info: at System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeAndVerifyType(DataContract dataContract, XmlWriterDelegator xmlWriter, Object obj, Boolean verifyKnownType, RuntimeTypeHandle declaredTypeHandle, Type declaredType)
info: at System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.SerializeWithXsiTypeAtTopLevel(DataContract dataContract, XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle originalDeclaredTypeHandle, Type graphType)
info: at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.InternalWriteObjectContent(XmlWriterDelegator writer, Object graph)
info: at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.InternalWriteObject(XmlWriterDelegator writer, Object graph)
info: at System.Runtime.Serialization.XmlObjectSerializer.InternalWriteObject(XmlWriterDelegator writer, Object graph, DataContractResolver dataContractResolver)
info: at System.Runtime.Serialization.XmlObjectSerializer.WriteObjectHandleExceptions(XmlWriterDelegator writer, Object graph, DataContractResolver dataContractResolver)
info: at System.Runtime.Serialization.XmlObjectSerializer.WriteObjectHandleExceptions(XmlWriterDelegator writer, Object graph)
info: at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.WriteObject(XmlDictionaryWriter writer, Object graph)
info: at System.Runtime.Serialization.Json.DataContractJsonSerializerImpl.WriteObject(Stream stream, Object graph)
info: at System.Runtime.Serialization.Json.DataContractJsonSerializer.WriteObject(Stream stream, Object graph)
info: at DataContractJsonSerializerTests.SerializeAndDeserialize[KeyValuePair`2](KeyValuePair`2 value, String baseline, DataContractJsonSerializerSettings settings, Func`1 serializerFactory, Boolean skipStringCompare)
info: at DataContractJsonSerializerTests.DCJS_KeyValuePair()
info: at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
The issue is this code:
Lines 1400 to 1412 in a5e626a
| [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] | |
| private void SetKeyValuePairAdapterFlags( | |
| [DynamicallyAccessedMembers(DataContractPreserveMemberTypes)] | |
| Type type) | |
| { | |
| if (type.IsGenericType && type.GetGenericTypeDefinition() == Globals.TypeOfKeyValuePairAdapter) | |
| { | |
| _isKeyValuePairAdapter = true; | |
| _keyValuePairGenericArguments = type.GetGenericArguments(); | |
| _keyValuePairCtorInfo = type.GetConstructor(Globals.ScanAllMembers, new Type[] { Globals.TypeOfKeyValuePair.MakeGenericType(_keyValuePairGenericArguments) }); | |
| _getKeyValuePairMethodInfo = type.GetMethod("GetKeyValuePair", Globals.ScanAllMembers)!; | |
| } | |
| } |
We need to annotate this so the linker will preserve the ctor on this class:
cc @joperezr
Metadata
Metadata
Assignees
Labels
area-Serializationlinkable-frameworkIssues associated with delivering a linker friendly frameworkIssues associated with delivering a linker friendly framework