2

WCFを始めたばかりです。シリアル化について質問がありました。WCFは、舞台裏でデフォルトでDataContractシリアル化を使用していることを知っています。アーロン・スコナードの記事http://msdn.microsoft.com/en-us/magazine/cc163569.aspxで、オンラインでいくつかのコードを見てきました。以下のコードは彼の記事からのものです。これで彼はPersonオブジェクトをシリアル化するコードを書きました。私の質問は、WCFが舞台裏でこれを行わないことです。なぜシリアル化ロジックを作成する必要があるのですか?その後、再度シリアル化を解除します。WCFのスターターとして、このコードをいつ作成するか、いつ作成しないかについて混乱しています。シリアル化ロジックが記述されていなければ、これは問題なく機能すると思います。感謝します!

static void WriterPersonSerializable()
{

Person p = new Person("Bob", 34, "secret");

p.spouse = new Person("Jane", 33, "secret");

using (FileStream fs = new FileStream("person.xml", FileMode.Create))
using (XmlDictionaryWriter writer =
    XmlDictionaryWriter.CreateTextWriter(fs))
{
    DataContractSerializer serializer =
        new DataContractSerializer(typeof(Person));
    serializer.WriteObject(writer, p);
}
4

1 に答える 1

2

あなたはそのようなことをする必要はありません。もちろん、独自のシリアル化を設定できます。ただし、デフォルトでは、クラスを[DataContract]属性でマークし、クラスのプロパティを[DataMember]属性でマークするだけで問題ありません。その後、必要なのは、[ServiceKnownType]属性でシリアル化/逆シリアル化できるクラスについてサービスに通知することだけです。それだけです、すべてが箱から出して動作します。

于 2013-02-22T23:30:32.783 に答える