public static ODataEdmTypeSerializer GetEdmTypeSerializer(this ODataSerializerProvider serializerProvider, object instance, HttpRequestMessage request) { Contract.Assert(serializerProvider != null); Contract.Assert(instance != null); IEdmObject edmObject = instance as IEdmObject; if (edmObject != null) { return(serializerProvider.GetEdmTypeSerializer(edmObject.GetEdmType())); } return(serializerProvider.GetODataPayloadSerializer(instance.GetType(), request) as ODataEdmTypeSerializer); }
private ODataSerializer GetSerializer(Type type, object value, IEdmModel model, ODataSerializerProvider serializerProvider) { ODataSerializer serializer; IEdmObject edmObject = value as IEdmObject; if (edmObject != null) { IEdmTypeReference edmType = edmObject.GetEdmType(); if (edmType == null) { throw new SerializationException(Error.Format(SRResources.EdmTypeCannotBeNull, edmObject.GetType().FullName, typeof(IEdmObject).Name)); } serializer = serializerProvider.GetEdmTypeSerializer(edmType); if (serializer == null) { string message = Error.Format(SRResources.TypeCannotBeSerialized, edmType.ToTraceString(), typeof(ODataMediaTypeFormatter).Name); throw new SerializationException(message); } } else { // get the most appropriate serializer given that we support inheritance. type = value == null ? type : value.GetType(); serializer = serializerProvider.GetODataPayloadSerializer(model, type, Request); if (serializer == null) { string message = Error.Format(SRResources.TypeCannotBeSerialized, type.Name, typeof(ODataMediaTypeFormatter).Name); throw new SerializationException(message); } } return serializer; }
public void GetODataPayloadSerializer_ThrowsArgumentNull_Type() { // Arrange HttpRequestMessage request = new HttpRequestMessage(); // Act & Assert Assert.ThrowsArgumentNull( () => _serializerProvider.GetODataPayloadSerializer(type: null, request: request), "type"); }