WCF - Могу ли я использовать существующий тип для передачи через мой сервис WCF?
У меня есть служба. У меня есть существующий класс бизнес-объектов. Я хотел бы знать, как я могу передать класс через WCF из сборки бизнес-объекта, не создавая новый класс на своем сайте WCF при добавлении или добавлении тегов?
Вот существующий пример UDT: пространства имен: Application.BusinessObjects.Appointments
Public Structure AppointmentResource
Private _id As String
Private _type As ResourceTypeOption
Private _name As String
Property id() As String
Get
Return _id
End Get
Set(ByVal value As String)
_id = value
End Set
End Property
Property type() As ResourceTypeOption
Get
Return CType(_type, Int32)
End Get
Set(ByVal value As ResourceTypeOption)
_type = value
End Set
End Property
Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
Public Sub New(ByVal id As String, ByVal type As ResourceTypeOption, ByVal name As String)
_id = id
_type = type
_name = name
End Sub
End Structure
Вот тот же, который я создал с атрибутами контракта данных: Пример пространства имен: Application.Service.Appointments
<DataContract()> _
Public Structure AppointmentResource
Private _id As String
Private _type As ResourceTypeOption
Private _name As String
<DataMember()> _
Property id() As String
Get
Return _id
End Get
Set(ByVal value As String)
_id = value
End Set
End Property
<DataMember()> _
Property type() As ResourceTypeOption
Get
Return CType(_type, Int32)
End Get
Set(ByVal value As ResourceTypeOption)
_type = value
End Set
End Property
<DataMember()> _
Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
Public Sub New(ByVal id As String, ByVal type As ResourceTypeOption, ByVal name As String)
_id = id
_type = type
_name = name
End Sub
End Structure
2 ответа
Существует простой способ обмениваться типами между клиентом и службой, просто добавив ссылку на сборку общего типа на свой клиент ПЕРЕД добавлением ссылки на службу.
Вы можете найти подробный сценарий и пример проекта там:
http://blog.walteralmeida.com/2010/08/wcf-tips-and-tricks-share-types-between-server-and-client.html
ResourceTypeOption также представляется пользовательским классом, поэтому вы должны определить его как часть контракта в своем собственном классе. Клиент должен знать об этом, и поэтому ему нужен собственный контракт. Клиенты уже знают, как обращаться с типами CLR, такими как string. Любые другие пользовательские типы также должны быть определены в контракте.