Start Debugging
2023-10-21 更新日 2023-11-05 dotnetdotnet-8 Edit on GitHub

System.Text.Json リフレクションベースのシリアライズを無効化する

.NET 8 以降、JsonSerializerIsReflectionEnabledByDefault プロパティを使って、trimmed および native AOT アプリで System.Text.Json のリフレクションベースのシリアライズを無効化する方法を解説します。

.NET 8 から、System.Text.Json に標準で含まれているリフレクションベースのシリアライザーを無効化できるようになりました。これは、リフレクション関連のコンポーネントをビルドに含めたくない trimmed や native AOT アプリで便利です。

この機能を有効にするには、.csproj ファイルで JsonSerializerIsReflectionEnabledByDefault プロパティを false に設定します。

<JsonSerializerIsReflectionEnabledByDefault>false</JsonSerializerIsReflectionEnabledByDefault>

副作用として、シリアライズ時とデシリアライズ時に JsonSerializerOptions を渡すことが必須になります。指定しないと、実行時に NotSupportedException が発生します。

このオプションと合わせて、JsonSerializer に新しい IsReflectionEnabledByDefault プロパティが追加されており、開発者は実行時にこの機能のオン・オフを確認できます。

Comments

Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.

< 戻る