我正在尝试将OData包(Microsoft.AspNet.OData
)从v5.9升级到v6.0并且我的代码中断了,因为我有一个扩展ODataEntityTypeSerializer
的类。
我在对象浏览器中搜索它并将其删除。当我回到v5.9.1时,它可以工作。
在新的6.0版本中是否有ODataEntityTypeSerializer
的替代品,或者这只是一个兼容性中断?
我的派生类是一种阻止null
值序列化的方法。
我根据this response on SO编写新的提供商来处理null
。
public class NullEntityTypeSerializer : ODataEntityTypeSerializer
{
public NullEntityTypeSerializer(ODataSerializerProvider serializerProvider)
: base(serializerProvider)
{ }
public override void WriteObjectInline(object graph, IEdmTypeReference expectedType, ODataWriter writer, ODataSerializerContext writeContext)
{
if (graph != null)
{
base.WriteObjectInline(graph, expectedType, writer, writeContext);
}
}
}
UPDATE(jul / 18):生成此解决方法的SingleResult.Create()
问题已在v7.0中得到修复,不再需要了。查看https://github.com/OData/WebApi/issues/170
答案 0 :(得分:1)
根据https://odata.github.io/WebApi/#07-18-6-0 你应该使用ODataResourceSerializer。
答案 1 :(得分:1)
在此处查看同一问题:https://github.com/OData/WebApi/issues/995
您调用此方法来获取IServiceProvider:https://github.com/OData/WebApi/blob/master/src/System.Web.OData/Extensions/HttpRequestMessageExtensions.cs#L234
还需要一个自定义的IContentNegotiator