|
9
|
| aleemb · 技术社区 · 16 年前 |
|
|
1
6
你不能-简单明了。DataContractSerializer需要该属性来获取要序列化的元素。在与XmlSerializer的契约中,它基本上只是序列化所有内容(除非您明确地告诉它忽略它),DataContractSerializer是“选择加入”-您必须明确地告诉它(通过属性)要序列化哪些字段和/或属性。 更新: 正如一些人指出的那样,对于.NET 3.5 SP1,Microsoft稍微放宽了这些规则-任何公共读/写属性都将由DataContractSerializer自动序列化。同时,您的类还需要有一个无参数的默认构造函数-听起来就像我们以前对xmlserializer的确切要求… 当然,这是:
我仍然认为这些事情应该是明确和清晰的,使那些不再需要打开了懒惰/草率编程的道路-我不喜欢它。但是,如果您愿意,现在可以使用它,而不必使用[datamember]显式标记属性。 马克 |
|
|
2
0
我相信这是可能的。如果实现了ISerializable接口,那么序列化程序将使用您的实现而不是属性。尽管我认为您仍然需要将类标记为[可序列化]。 它比添加属性要稍微多一些,但它确实有效。 |
|
|
3
0
只需用[serializable]属性标记类。 任何不希望使用[非序列化]进行序列化标记的成员。请注意,[serializable]导致默认情况下所有字段都被序列化,其中[datacontract]默认情况下不序列化任何字段,但标记为[datamember]的字段除外。 |