私は通常、SalesItem
というクラスのインスタンスを作成し、そのようなWebサービスのパラメータとして渡すことができますwebService.CreateSalesitem(New SalesItem())
これは正常に動作します。基本的なWCFの質問
次に、SalesItem
クラスをサブクラス化しました。私はそれをGP_Item_SIM_Product
と呼んだ。しかし、このクラスをWebサービスのパラメータとして渡そうとすると、例外が発生します。ここで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 'が です。たとえば、 でKnownTypeAttribute属性を使用するか、DataContractSerializerに渡された既知の型の一覧 に追加することで、DataContractResolverを使用するか、または静的に既知の型のリストに知られていない型 を追加することを検討してください。詳細については、 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
それがWebサービスに送信することができるように私は私のクラスを変更することができますどのように任意のアイデア。私はそれがこのクラスの2つのフィールドと関係があると思います。特別なものとしてマークする必要があるかどうかはわかりません。
ありがとうございました。私はクラス宣言にこれを追加しようとしました: '' _ _ パブリッククラスGP_Item_SIM_Product'。しかし、行かない... –
user489041