为具有属性“DataContract”和“Serializable”的类创建的重复属性

时间:2010-12-28 12:47:30

标签: .net wcf wcf-client

我有一个包含2个属性的类,“DataContract”和“Serializable”。该类正在服务中使用。该服务正由项目使用。我通过使用VS的“添加服务引用”功能(右键单击引用 - 添加 - 服务引用)在项目中添加了服务引用。每当我添加服务引用时,都会在服务引用的Reference.cs文件中创建类的重复属性,1具有“DataMember”属性,而其他属性具有“Serializable”属性。这导致构建错误。如果我没有放置Serializable属性,那么服务引用只能使用具有“DataMember”属性的类的一组属性来正常工作。

知道为什么会发生这种情况,我们可以做些什么来避免这种情况?请注意,该类需要这两个属性,即我无法删除任何属性。

2 个答案:

答案 0 :(得分:1)

你能解释为什么你需要这两个属性吗?

DataContractSerializer可以使用Serializable属性。

但是,要使BinaryFormattor生效,您需要Serializable属性。

找到摆脱DataContract属性的方法。

- 编辑 -

默认情况下,

WCF使用DataContractSerializer来序列化/反序列化通道上的对象。根据{{​​1}}文档,

@ DataContractSerializer Class

MSDN

因此,要使WCF正常工作,您可以摆脱// You must apply a DataContractAttribute or SerializableAttribute // to a class to have it serialized by the DataContractSerializer. s。

答案 1 :(得分:0)

@Samar最好的方法是只使用DataContract属性,因为它在内部使Serializable属性进入图片(默认情况下)。