Вот что я хочу сделать.Это (теоретически) должно быть очень просто.
Скажем, у меня есть служба WCF со следующим кодом (функциональность «голые кости»):
<DataContract()>
Public Class BaseObj
<DataMember()>
Public ID As Integer
End Class
<DataContract()>
Public Class TestObj1
Inherits BaseObj
Public Sub New(ByVal idval As Integer)
ID = idval
End Sub
End Class
<DataContract()>
Public Class TestObj2
Inherits BaseObj
Public Sub New(ByVal idval As Integer)
ID = idval
End Sub
<DataMember()>
Public DoNotShow As String = "fail"
End Class
Вот код, который я хочу написать:
<WebInvoke(Method:="GET", ResponseFormat:=WebMessageFormat.Json, UriTemplate:="Test?reqReportID={reqReportID}")>
Public Function GetCollection(ByVal reqReportID As Integer) As List(Of BaseObj)
Dim myObjs as New List(Of BaseObj)
myObjs.add(new TestObj1(1))
myObjs.add(new TestObj2(2))
return myObjs
End Function
Я хочу, чтобы ответ JSON выглядел в точности так: [{"ID":1},{"ID":2}]
Теперь код, который у меня есть, в настоящее время возвращает пустой ответ (не выдано никакой ошибки, информация не передана).Я могу заставить его вернуть что-то , выполнив это:
<DataContract(), KnownType(GetType(TestObj1)), KnownType(GetType(TestObj2))>
Public Class BaseObj
<DataMember()>
Public ID As Integer
End Class
Однако в ответ добавляется «__type» к объекту JSON, а также добавляется «DoNotShow» к объекту JSON (не очень хорошая вещь).
Проблема в том, что я не хочу, чтобы передавал информацию, уникальную для каждого объекта.Мне нужна только информация, общая для каждого объекта через базовый класс .Ничто из того, что я могу сделать, не изменит этого, и, если я что-то упустил, создается впечатление, что авторы WCF, создавая это, имели очень несерьезный взгляд на ОО-программирование.будет принята с благодарностью.