Antaramuka Penghantaran untuk Penyahserikatan dalam JSON.NET
Apabila bekerja dengan JSON.NET untuk penyahserikan, isu biasa timbul apabila berurusan dengan kelas yang mengandungi sifat peringkat antara muka. Ralat "Tidak dapat mencipta contoh jenis IThingy. Jenis ialah antara muka atau kelas abstrak dan tidak boleh dijadikan instantiated" menunjukkan bahawa JSON.NET tidak dapat menyahsiri antara muka.
Untuk menyelesaikan masalah ini, gunakan penyelesaian yang dicadangkan oleh @SamualDavis dalam urutan serupa:
Sertakan Kelas Konkrit sebagai Parameter Pembina:
Apabila mengisytiharkan kelas yang mempunyai sifat antara muka, masukkan kelas konkrit sebagai parameter kepada pembinanya. Dengan cara ini, JSON.NET boleh mengenal pasti kelas khusus yang akan digunakan semasa penyahserikatan.
Contoh Pembina:
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; } }
Dengan mengikuti pendekatan ini, JSON.NET akan berjaya menyahsiri objek JSON ke dalam objek C# anda, walaupun jika ia mengandungi sifat peringkat antara muka.
Atas ialah kandungan terperinci Bagaimana untuk Menyahserialisasikan JSON dengan Sifat Antara Muka dalam JSON.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!