0

1)Binding创建 ChannelFactory时使用对序列化/反序列化的工作方式有什么影响吗?(我知道使用的绑定应该与服务的服务器端绑定相匹配。)

我在其中一个中使用KnownType属性,DataContract但它不起作用。但是,如果我使用XmlIncludeAttribute,它就可以工作!(我正在将我的 ASMX 服务迁移到 WCF。但我没有使用任何 MessageContracts,因为我也可以自由更新客户端代理。)

[XmlInclude(typeof(Males))] [DataContract] public abstract class Person { [DataMember] public int Name { get; 放; } }

2)如果我使用任何XmlSerializer用于 WCF 的属性(具体来说 - XmlInclude)),WCFDataContract是否使用XmlSerializer而不是DataContractSerializer

4

1 回答 1

-1

DataContractSerializer 支持 XmlSerializer 支持的所有内容,但反之则不然。但是如果一个类型用 [DataContract] 修饰,它会完全切换到新的 DataContract 编程模型,完全放弃对 [Serializable]、IXmlSerializable 等类型的支持,否则它本来会有的。

因此,只有在使用 ASMX 和传统的 XmlSerializer 时,您的 [XmlInclude] 魔法才有效。如果您使用 DataContractSerializer,则必须使用已知类型,并且根本不支持诸如 [XmlInclude] 和 XML 属性之类的 XML 主义。但是,如果您愿意,您仍然可以使用 XmlSerializer 而不是 DataContractSerializer;您需要做的就是使用 [XmlSerializerFormatAttribute.] 装饰要切换到 XmlSerializer 的服务或操作。

希望这可以帮助!

于 2012-04-27T03:06:31.103 回答