JSON.NET での逆シリアル化用のインターフェイスのキャスト
逆シリアル化のために JSON.NET を使用する場合、次のようなクラスを扱うときに一般的な問題が発生します。インターフェースレベルのプロパティが含まれます。 「タイプ IThingy のインスタンスを作成できませんでした。タイプはインターフェイスまたは抽象クラスなのでインスタンス化できません」というエラーは、JSON.NET がインターフェイスを逆シリアル化できないことを示します。
これを解決するには、提案されたソリューションを利用してください。 @SamualDavis による同様のスレッド:
Include Concreteコンストラクター パラメーターとしてのクラス:
インターフェイス プロパティを持つクラスを宣言する場合、具体的なクラスをパラメーターとしてコンストラクターに含めます。このようにして、JSON.NET は逆シリアル化中に使用される特定のクラスを識別できます。
コンストラクターの例:
public class Visit : IVisit { /// <summary> /// This constructor is required for the JSON deserializer to be able /// to identify concrete classes to use when deserializing the interface properties. /// </summary> 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; } }
このアプローチに従うことで、JSON.NET は JSON オブジェクトを C# に正常に逆シリアル化できるようになります。オブジェクトにインターフェイスレベルのプロパティが含まれている場合でも。
以上がJSON.NET のインターフェイス プロパティを使用して JSON を逆シリアル化する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。