WCF序列化代码

时间:2013-02-22 23:09:37

标签: wcf serialization deserialization

我刚刚开始使用WCF。我有一个关于序列化的问题。我知道WCF在幕后默认使用DataContract Serialization。我已经在Aaron Skonnard的文章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);
}

1 个答案:

答案 0 :(得分:2)

你不必做那样的事情。当然,您可以设置自己的序列化。但是默认情况下,只需按 [DataContract] 属性和类的属性按 [DataMember] 属性标记类即可。之后,您需要做的就是告知您的服务,它应该能够在 [ServiceKnownType] 属性中序列化/反序列化哪些类。就是这样,一切都将开箱即用。