Imports System
Imports System.IO
Imports System.Collections
Imports System.Collections.Generic
Imports System.Runtime.Serialization
Imports ServiceStack
Imports ServiceStack.DataAnnotations
Imports MyApp.ServiceModel
Namespace Global
Namespace MyApp.ServiceModel
Public Partial Class AllCollectionTypes
Public Overridable Property IntArray As Integer() = New Integer(){}
Public Overridable Property IntList As List(Of Integer) = New List(Of Integer)
Public Overridable Property StringArray As String() = New String(){}
Public Overridable Property StringList As List(Of String) = New List(Of String)
Public Overridable Property PocoArray As Poco() = New Poco(){}
Public Overridable Property PocoList As List(Of Poco) = New List(Of Poco)
Public Overridable Property NullableByteArray As Byte?() = New Byte?(){}
Public Overridable Property NullableByteList As List(Of Nullable(Of Byte)) = New List(Of Nullable(Of Byte))
Public Overridable Property NullableDateTimeArray As Date?() = New Date?(){}
Public Overridable Property NullableDateTimeList As List(Of Nullable(Of DateTime)) = New List(Of Nullable(Of DateTime))
Public Overridable Property PocoLookup As Dictionary(Of String, List(Of Poco)) = New Dictionary(Of String, List(Of Poco))
Public Overridable Property PocoLookupMap As Dictionary(Of String, List(Of Dictionary(Of String,Poco))) = New Dictionary(Of String, List(Of Dictionary(Of String,Poco)))
End Class
Public Partial Class AllTypes
Implements IGet
Public Overridable Property Id As Integer
Public Overridable Property NullableId As Integer?
Public Overridable Property [Byte] As Byte
Public Overridable Property [Short] As Short
Public Overridable Property Int As Integer
Public Overridable Property [Long] As Long
Public Overridable Property [UShort] As UInt16
Public Overridable Property UInt As UInt32
Public Overridable Property [ULong] As UInt64
Public Overridable Property Float As Single
Public Overridable Property [Double] As Double
Public Overridable Property [Decimal] As Decimal
Public Overridable Property [String] As String
Public Overridable Property DateTime As Date
Public Overridable Property TimeSpan As TimeSpan
Public Overridable Property DateTimeOffset As DateTimeOffset
Public Overridable Property Guid As Guid
Public Overridable Property [Char] As Char
Public Overridable Property KeyValuePair As KeyValuePair(Of String, String)
Public Overridable Property NullableDateTime As Date?
Public Overridable Property NullableTimeSpan As TimeSpan?
Public Overridable Property StringList As List(Of String) = New List(Of String)
Public Overridable Property StringArray As String() = New String(){}
Public Overridable Property StringMap As Dictionary(Of String, String) = New Dictionary(Of String, String)
Public Overridable Property IntStringMap As Dictionary(Of Integer, String) = New Dictionary(Of Integer, String)
Public Overridable Property SubType As SubType
Public Overridable Property Point As String
<DataMember(Name:="aliasedName")>
Public Overridable Property OriginalName As String
End Class
Public Partial Class HelloAllTypes
Public Overridable Property Name As String
Public Overridable Property AllTypes As AllTypes
Public Overridable Property AllCollectionTypes As AllCollectionTypes
End Class
Public Partial Class HelloAllTypesResponse
Public Overridable Property Result As String
Public Overridable Property AllTypes As AllTypes
Public Overridable Property AllCollectionTypes As AllCollectionTypes
End Class
Public Partial Class Poco
Public Overridable Property Name As String
End Class
Public Partial Class SubType
Public Overridable Property Id As Integer
Public Overridable Property Name As String
End Class
End Namespace
End Namespace
To override the Content-type in your clients, use the HTTP Accept Header, append the .csv suffix or ?format=csv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /csv/reply/HelloAllTypes HTTP/1.1
Host: blazor-gallery.servicestack.net
Accept: text/csv
Content-Type: text/csv
Content-Length: length
{"name":"String","allTypes":{"id":0,"nullableId":0,"byte":0,"short":0,"int":0,"long":0,"uShort":0,"uInt":0,"uLong":0,"float":0,"double":0,"decimal":0,"string":"String","dateTime":"0001-01-01T00:00:00","timeSpan":"PT0S","dateTimeOffset":"0001-01-01T00:00:00+00:00","guid":"00000000-0000-0000-0000-000000000000","char":"\u0000","keyValuePair":{"key":"String","value":"String"},"nullableDateTime":"0001-01-01T00:00:00","nullableTimeSpan":"PT0S","stringList":["String"],"stringArray":["String"],"stringMap":{"String":"String"},"intStringMap":{"0":"String"},"subType":{"id":0,"name":"String"},"point":"0,0","aliasedName":"String"},"allCollectionTypes":{"intArray":[0],"intList":[0],"stringArray":["String"],"stringList":["String"],"pocoArray":[{"name":"String"}],"pocoList":[{"name":"String"}],"nullableByteArray":[0],"nullableByteList":[0],"nullableDateTimeArray":["0001-01-01T00:00:00"],"nullableDateTimeList":["0001-01-01T00:00:00"],"pocoLookup":{"String":[{"name":"String"}]},"pocoLookupMap":{"String":[{"String":{"name":"String"}}]}}}
HTTP/1.1 200 OK Content-Type: text/csv Content-Length: length {"result":"String","allTypes":{"id":0,"nullableId":0,"byte":0,"short":0,"int":0,"long":0,"uShort":0,"uInt":0,"uLong":0,"float":0,"double":0,"decimal":0,"string":"String","dateTime":"0001-01-01T00:00:00","timeSpan":"PT0S","dateTimeOffset":"0001-01-01T00:00:00+00:00","guid":"00000000-0000-0000-0000-000000000000","char":"\u0000","keyValuePair":{"key":"String","value":"String"},"nullableDateTime":"0001-01-01T00:00:00","nullableTimeSpan":"PT0S","stringList":["String"],"stringArray":["String"],"stringMap":{"String":"String"},"intStringMap":{"0":"String"},"subType":{"id":0,"name":"String"},"point":"0,0","aliasedName":"String"},"allCollectionTypes":{"intArray":[0],"intList":[0],"stringArray":["String"],"stringList":["String"],"pocoArray":[{"name":"String"}],"pocoList":[{"name":"String"}],"nullableByteArray":[0],"nullableByteList":[0],"nullableDateTimeArray":["0001-01-01T00:00:00"],"nullableDateTimeList":["0001-01-01T00:00:00"],"pocoLookup":{"String":[{"name":"String"}]},"pocoLookupMap":{"String":[{"String":{"name":"String"}}]}}}