JSON.NET デシリアライゼーションとインターフェイス プロパティ: 実用的なソリューション
JSON.NET を使用して JSON データを C# オブジェクトに逆シリアル化すると、インターフェイス型のプロパティを処理するときに問題が発生する可能性があります。 よくあるエラーが発生します: JSON.NET はインターフェイスを直接インスタンス化できません。
解決策は、クラスのコンストラクター内で具体的なクラス パラメーターを利用することにあります。 これにより、逆シリアル化中に JSON.NET が正しい具象クラスに誘導されます。
これが例です:
<code class="language-csharp">public class Visit : IVisit { // Constructor crucial for JSON.NET to identify concrete types for deserialization. public Visit(MyLocation location, Guest guest) { Location = location; Guest = guest; } public long VisitId { get; set; } public ILocation Location { get; set; } public DateTime VisitDate { get; set; } public IGuest Guest { get; set; } }</code>
コンストラクターに MyLocation
と Guest
(それぞれ ILocation
と IGuest
を実装する具象クラス) を含めることで、JSON.NET は JSON データを適切な型に適切にマップでき、インターフェイスのインスタンス化の問題を解決できます。 このアプローチにより、スムーズな逆シリアル化を確保しながらインターフェイスの柔軟性を維持できます。
以上がJSON.NET で JSON インターフェイス レベルのプロパティを逆シリアル化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。