.net 为具有“属性”的类创建的重复属性;“数据合同”;及;“可序列化”;
我有一个类,上面有两个属性,“DataContract”和“Serializable”。此类正在服务中使用。此服务正在被项目使用。我使用VS的“添加服务引用”功能(右键单击references--add--service reference)在项目中添加了服务引用。每当我添加服务引用时,都会在服务引用的reference.cs文件中创建该类的重复属性,1具有“DataMember”属性,另一个具有“Serializable”属性。这将导致生成错误。如果我不放置Serializable属性,那么服务引用只需使用具有“DataMember”属性的类的1组属性就可以正常工作.net 为具有“属性”的类创建的重复属性;“数据合同”;及;“可序列化”;,.net,wcf,wcf-client,.net,Wcf,Wcf Client,我有一个类,上面有两个属性,“DataContract”和“Serializable”。此类正在服务中使用。此服务正在被项目使用。我使用VS的“添加服务引用”功能(右键单击references--add--service reference)在项目中添加了服务引用。每当我添加服务引用时,都会在服务引用的reference.cs文件中创建该类的重复属性,1具有“DataMember”属性,另一个具有“Serializable”属性。这将导致生成错误。如果我不放置Serializable属性,那么服
知道为什么会发生这种情况吗?我们能做些什么来避免这种情况?请注意,这两个属性都是类所必需的,即我不能删除任何属性。您能解释一下为什么需要这两个属性吗
DataContractSerializer
与Serializable
属性配合使用效果良好
但是,要使BinaryFormattor
工作,您需要Serializable
属性
找到一种摆脱DataContract
属性的方法
--编辑--
WCF
默认情况下使用DataContractSerializer
通过通道序列化/反序列化对象。根据MSDN
文件
@
因此,要使WCF正常工作,您可以去掉DataContract。@Samar最好的方法是只使用DataContract属性,因为它在内部使可序列化属性进入图片(默认情况下)。我需要“Serializable”属性来创建对象和“DataContract”的深度克隆属性,以便我可以在WCF服务中使用它。你能给我一些摆脱“DataContract”属性的方法吗?因为据我所知,在WCF服务中使用一个没有“DataContract”属性的类来传输数据是不可能的。我在这里和我的同事讨论过,他们说如果我们只保留“Serializable”属性,那么性能会受到影响,而且它会变得和web服务一样好。此外,它还存在一些问题,无法对某些类型进行属性序列化。属性上的“DataMember”属性也不能与类上的“Serializable”属性一起使用。属性还需要标记为“可序列化”。所有这些都正确吗?我尝试过这样做,但问题是,当我只保留DataContract属性时,我无法创建类的深层副本。您必须知道,创建深度副本需要将该类标记为可序列化,并且当我尝试创建深度副本时。net表示该类未序列化,即使我已将该类标记为DataContract。有什么理由让它这样做吗?
// You must apply a DataContractAttribute or SerializableAttribute
// to a class to have it serialized by the DataContractSerializer.