2017-05-06 8 views
0

私はJson.Netを内部的に使用するWeb APIを使用しています。現在、カスタム契約リゾルバを1つの特定のモデルにのみ適用する必要があるシナリオがあります。 [JsonConverter(typeof(MyConverter))]のような属性を使ってカスタムJsonConverterを適用することができます。 1つのモデルでカスタム契約レゾルバを同じ方法で適用することは可能ですか?属性を使用して特定のモデルに契約レゾルバを適用する

私のシナリオでは、デシリアライズ時に[JsonProperty]の属性を使用できる必要がありますが、直列化中にはモデルクラスのいずれかに対して無視します。

答えて

1

契約レゾルバ自体は、モデルに適用される属性を決定する責任を負うため、特定のモデルに契約レゾルバを適用する属性はありません。

モデルクラスのカスタム属性を検索するカスタムリゾルバを作成して、そのクラスに特別な動作を適用するか、既定の動作を使用して戻す属性がないかを判断できます。

ただし、Web APIを使用しているためシリアライズ時には特殊な動作(JsonProperty属性を無視)を適用するだけで、逆シリアル化ではないため、この考え方はうまくいくとは思えません。私が知る限り、リゾルバにはどの操作が使用されているかを知る方法はありません。したがって、適切な時点でリゾルバを選択的に適用するには、カスタムバインダまたはフォーマッタが必要です。

関連する問題