在将数据传输到客户端应用程序时,我们需要根据用户权限隐藏某些字段。
使用Json.Net及其ShouldSerialize方法,此应该很简单。...不幸的是,Microsoft的OData实现似乎没有使用Json.net作为其内部序列化程序。我没有被锁定使用Json.net解决方案。它似乎只是最有可能获得成功的候选人。
我一直在尝试为OData实现客户序列化程序,但是我发现的唯一例子似乎是几年前的,不再正确。
我们正在使用Microsoft.AspNet.Odata软件包的最新版本,由于我们正在利用许多新功能,因此无法还原。
我已经玩了几天,似乎应该是我下面的内容,但是到目前为止我还没有运气。
public class NewtonsoftODataMediaTypeFormatter:ODataMediaTypeFormatter
{
public NewtonsoftODataMediaTypeFormatter(IEnumerable<ODataPayloadKind> payloadKinds)
: base(payloadKinds)
{
}
public override Task WriteToStreamAsync(
Type type,
object value,
Stream writeStream,
HttpContent content,
TransportContext transportContext,
CancellationToken cancellationToken)
{
using (StreamWriter writer = new StreamWriter(writeStream))
{
writer.Write(JsonConvert.SerializeObject(value));
}
return Task.CompletedTask;
}
}