我有一个业务要求,即只在我们的响应负载中发送许可的属性。例如,我们的响应 DTO 可能有几个属性,其中之一是 SSN。如果用户没有查看 SSN 的权限,那么我绝不希望它出现在 Json 响应中。第二个要求是,如果客户端有权查看或更改属性,我们发送空值。由于第二个要求,将用户无法查看的属性设置为 null 将不起作用。我仍然必须返回空值。
我有一个可行的解决方案。我通过我的 DTO 反射创建了一个 expandoObject,并且只添加了我需要的属性。这在我的测试中有效。
我看过实现 ITextSerializer。我可以使用它并将我的响应 DTO 包装在另一个具有要跳过的属性列表的对象中。然后我可以推出我自己的 SerializeToString() 和 SerializeToStream()。在这一点上,我真的没有看到任何其他方式。我不能使用 JsConfig 并制作 SerializeFn,因为要跳过的属性会随着每个请求而改变。
所以我认为实现 ITextSerializer 是一个不错的选择。有没有很好的例子来实现这一点?我真的很想利用序列化程序中已经完成的所有艰苦工作,并利用出色的性能。我认为在理想的世界中,我只需要在 WriteType.WriteProperties() 中添加一个检查即可查看,并且该属性是要写入的,但这是内部的,实际上,它们中的大多数都是所以我真的无法接受他们的优势。
如果有人有一些见解,请告诉我!也许我正在使 ITextSerialzer 的实现变得更加困难,实际上是这样吗?
谢谢!
拉取请求#359将属性“ExcludePropertyReference”添加到 JsConfig 和 JsConfigScope。您现在可以像我需要的那样排除范围内的引用。