カスタムオブジェクトをシリアル化してWindowsサービスに送信する必要があるアプリケーションがあります。カスタムオブジェクトには、カスタムオブジェクトの2つのリストと、int、stringの辞書が含まれています。オブジェクトをシリアル化しようとすると、エラーメッセージが表示されます。
There was an error generating the XML document.
グーグルで調べたところ、これは通常、データ型の1つがシリアル化用に正しく設定されていないことが原因であることがわかりました。だから私はすべてのカスタムクラスのシリアル化を調べて検証しました、そして私が知る限りそれは正しくセットアップされています。
私の質問は、リストと辞書はデフォルトでシリアル化できるのか、それともシリアル化するために何かをする必要があるのかということです。または、実行可能ファイル間で渡されるカスタムオブジェクトのコレクションをシリアル化するためのより良い方法はありますか?
編集:
メインカスタムクラス:
[Serializable]
class MoveInInfoRequest : ServerRequestData
{ }
[Serializable]
[XmlInclude(typeof(GetUnitTypesResponseData)), XmlInclude(typeof(VendorObj.RequiredFields)),
XmlInclude(typeof(VendorObj.InsuranceChoice)), XmlInclude(typeof(VendorObj.ProrateSettings))]
public class MoveInInfoResponse : ServerResponseData
{
public GetUnitTypesResponseData UnitTypesInfo
{ get; set; }
public List<VendorObj.RequiredFields> RequiredFields
{ get; set; }
public Dictionary<int, String> RentalPeriods
{ get; set; }
public List<VendorObj.InsuranceChoice> InsCoverageAmounts
{ get; set; }
public VendorObj.ProrateSettings ProrateOptions
{ get; set; }
}
Sampple Subクラス:他の2つのクラスは、これと同じようにずっと長く設定されていますが、デフォルトのデータ型のみを使用しています。
<Serializable(), DataContract([Namespace]:="*companyNamespace*")> _
Public Class InsuranceChoice
Public Sub New()
End Sub
<DataMember()> _
Public InsuranceChoiceID As Integer
<DataMember()> _
Public CoverageDescription As String
<DataMember()> _
Public Premium As Decimal
<DataMember()> _
Public ActualCoverageAmount As Decimal
End Class