Обычно я могу создать экземпляр класса с именем SalesItem
и передать его в качестве параметра веб-службе, например webService.CreateSalesitem(New SalesItem())
. Это прекрасно работает.
Затем я подклассифицировал свой класс SalesItem
.Я назвал это GP_Item_SIM_Product
.Однако, когда я пытаюсь передать этот класс в качестве параметра моему веб-сервису, я получаю исключение.webService.CreateSalesitem(new GP_Item_SIM_Product()
)
Вот исключение:
Произошла ошибка при попытке сериализации параметра http://schemas.microsoft.com/dynamics/gp/2010/01:salesItem. Сообщение InnerException было «Тип» IMS.GP_Item_SIM_Product 'с именем контракта данных 'GP_Item_SIM_Product: http://schemas.datacontract.org/2004/07/IMS' не ожидается.Рассмотрите возможность использования DataContractResolver или добавьте любые типы, которые не известны статически, в список известных типов - например, с помощью атрибута KnownTypeAttribute или добавив их в список известных типов, переданных в DataContractSerializer. '.Пожалуйста, смотрите InnerException для получения более подробной информации.
Вот мой подкласс:
Imports System.ServiceModel
Imports GP_1.DynamicsGPClient
Imports GP_1.Microsoft.Dynamics.GP
Imports GP_1.Microsoft.Dynamics.Common
Imports SierraLib
Imports GP_1.GP
Imports GP_1
Imports System.Runtime.Serialization
< DataContract() > _
Public Class GP_Item_SIM_Product
Inherits SalesItem
Dim SIMProduct As Products
Dim greatPlainsRunner As GPRunner
Public Sub New(ByVal gpr As GPRunner, ByVal product As Products)
SIMProduct = product
greatPlainsRunner = gpr
SetValues()
End Sub
Private Sub SetValues()
Me.Key = New ItemKey() With {.Id = SIMProduct.MFGPN}
Me.Description = Description
Me.CurrentCost = New MoneyAmount() With {.Currency = Defaults.usCurrency, .Value = CDec(SIMProduct.Cost)}
Me.StandardCost = New MoneyAmount() With {.Currency = Defaults.usCurrency, .Value = CDec(SIMProduct.Price)}
Me.IsDiscontinued = Not SIMProduct.Enabled
Me.SalesTaxBasis = IIf(CBool(SIMProduct.Taxed = True),
GP_1.Microsoft.Dynamics.GP.SalesTaxBasis.Taxable,
GP_1.Microsoft.Dynamics.GP.SalesTaxBasis.Nontaxable)
End Sub
End Class
Любые идеи, как я могу изменить свой класс, чтобы его можно было отправить в веб-сервис.Я думаю, что это как-то связано с двумя полями в этом классе, которые я добавил.Не уверен, что мне нужно пометить их как что-то особенное.