如何在 JSON.NET 中使用介面屬性反序列化 JSON?
Jan 18, 2025 pm 04:11 PM在JSON.NET 中轉換用於反序列化的介面
使用JSON.NET 進行反序列化時,在處理以下類別時會出現一個常見問題:包含介面級屬性。錯誤「無法建立 IThingy 類型的實例。類型是介面或抽象類,無法實例化」表示 JSON.NET 無法反序列化介面。
要解決此問題,請使用建議的解決方案作者:@SamualDavis 在類似的線程中:
-
包含具體類別作為建構子參數:
聲明具有介面屬性的類別時,將具體類別作為其建構子的參數。這樣,JSON.NET 就可以辨識出反序列化期間要使用的特定類別。
-
構造函數範例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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中文網其他相關文章!

熱門文章

熱門文章

熱門文章標籤

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)