私は指の練習をしており、コンピュータとWindowsの携帯電話がBluetoothトラフのシリアルポートを介して通信できるアプリケーションを作成しようとしています。コンパクトなフレームワークでのXmlSerializationの問題3.5
私はオブジェクトのシリアライズに悩まされました。バイナリのSeralizationは.Net Compact Frameworkではサポートされていませんので、XmlSerializationを選択しています。私は2つのクラスのライブラリを書いています。私は送受信の一般的な方法を持つことができるように、他のクラスを含むことができるはずのObjectCarrier。そして、衣装クラスMusicAlbumを持っています。
設定全体がPC側で完全に機能します。モバイルサイトでは、次のエラーが表示され続けます。 System.InvalidOperationException:XMLドキュメントの生成中にエラーが発生しました。 ---> System.InvalidOperationException:TransferObject.MusicAlbumタイプが期待されていませんでした。静的に知られていない型を指定するには、XmlIncludeまたはSoapInclude属性を使用します。
奇妙なことは、ObjectCarrierを使用して文字列やdatetimeオブジェクトのようなものをペイロードに配置すると、モバイル上で動作するということです。
私はMusicAlbumクラスで何が間違っていますか?
--- | MusicListing.cs | -------------
using System;
using System.Collections.Generic;
using System.Text;
namespace TransferObject
{
public class MusicAlbum
{
public string AlbumName { get; set; }
public string ArtistName { get; set; }
}
}
--- | TransferObject.cs | -----------
using System;
using System.Xml.Serialization;
namespace TransferObject
{
[XmlInclude(typeof(MusicAlbum))]
public class ObjectCarrier
{
public Object PayloadObject { get; set; }
}
}
あなたsuggetionいただきありがとうございます。これは、私がそれをどうやって行っているかを啓示するのに役立ちました。抽象クラスを使用することで、私はもはやキャリアを必要としません。
私はそれがモバイルライブラリではなくWindowsライブラリであるという自分の責任でした。コードを変更した後、コードは完全に機能しました。私が今試した限り、両側で。何か変わったら、これを更新します。
+1 XMLを使ってプロトタイプを推薦する。 – ctacke