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. Любые другие пользовательские типы также должны быть определены в контракте.

Другие вопросы по тегам