При попытке вернуть объект из JSON asp.net 3.5SP1 WebService (не WCF, классический asp.net WebService с атрибутом scriptservice ), у меня появляется "Обнаружена циклическая ссылкапри сериализации объекта типа 'Geo.Bound' " ошибка, вызванная самоссылающимся свойством только для чтения:
Упрощенный код:
Namespace Geo
<DataContract(Namespace:="Geo", IsReference:=True)> _
Public Class Bound
<DataMember(Name:="sw", IsRequired:=False)> _
Public SouthWestCoord As Double
Public Sub New()
SouthWestCoord = 1.5#
End Sub
<IgnoreDataMember()> _
Public ReadOnly Property Bds() As Bound
Get
Return Me
End Get
End Property
End Class
End Namespace
- Iхотите сохранить свойство «Только для чтения», поскольку оно используется для реализации интерфейса.
- Добавление атрибута «IsReference: = True» в класс Bound ничего не меняет.
- Если я использую DataContractJsonSerializer (внев контексте веб-сервиса, как этот пример: текст ссылки ), он работает, и у меня есть правильный JSON.
- Если я удаляю свойство "Bds" только для чтения, оно работает !!
Не понимаю почему!Это свойство только для чтения, без атрибута DataMember, с атрибутом IgnoreDatamember, его нельзя сериализовать!
Как сохранить свойство "Bds" и избавиться от исключения циклической ссылки?
Спасибо!