応答ペイロードで許可されたプロパティのみを送信するというビジネス要件があります。たとえば、応答 DTO には複数のプロパティがあり、そのうちの 1 つが SSN です。ユーザーが SSN を表示する権限を持っていない場合、Json 応答に含めたくありません。2 番目の要件は、クライアントがプロパティを表示または変更する権限を持っている場合、null 値を送信することです。2 番目の要件が設定されているため、ユーザーが null に表示できないプロパティは機能しません。null 値を返す必要があります。
うまくいく解決策があります。DTO を反映して expandoObject を作成し、必要なプロパティのみを追加します。これは私のテストで機能しています。
ITextSerializer の実装を見てきました。それを使用して、スキップするプロパティのリストを持つ別のオブジェクトに応答 DTO をラップすることができます。次に、独自の SerializeToString() と SerializeToStream() をロールすることができます。現時点では、他に方法はありません。スキップするプロパティがリクエストごとに変わるため、JsConfig を使用して SerializeFn を作成することはできません。
したがって、ITextSerializer を実装することは良い選択肢だと思います。これが実装されている良い例はありますか? シリアライザーですでに行われたすべてのハードワークを使用して、優れたパフォーマンスを活用したいと思います。理想的な世界では、見るために WriteType.WriteProperties() にチェックを追加するだけで済み、プロパティは書き込む必要があると思いますが、それは内部的なものであり、実際にはほとんどのものなので、実際には取ることができませんそれらの利点。
誰かが洞察力を持っているなら、私に知らせてください!多分私は ITextSerialzer の実装を実際よりもずっと難しくしているでしょうか?
ありがとう!
プル リクエスト#359は、プロパティ「ExcludePropertyReference」を JsConfig および JsConfigScope に追加しました。必要に応じて、スコープ内の参照を除外できるようになりました。