JSON.NET에서 역직렬화를 위한 캐스팅 인터페이스
역직렬화를 위해 JSON.NET을 사용하는 경우 다음과 같은 클래스를 처리할 때 일반적인 문제가 발생합니다. 인터페이스 수준 속성을 포함합니다. "IThiny 유형의 인스턴스를 생성할 수 없습니다. 유형은 인터페이스 또는 추상 클래스이므로 인스턴스화할 수 없습니다."라는 오류는 JSON.NET이 인터페이스를 역직렬화할 수 없음을 나타냅니다.
이 문제를 해결하려면 제안된 솔루션을 활용하세요. 유사한 스레드의 @SamualDavis 작성:
구체 클래스를 생성자로 포함 매개변수:
인터페이스 속성이 있는 클래스를 선언할 때 구체적인 클래스를 생성자에 대한 매개변수로 포함합니다. 이런 방식으로 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!