【发布时间】:2013-11-19 19:07:31
【问题描述】:
我将一个类的公共属性更改为受保护
public class SlideSet : UserModifiable.Properties, Validation.IValidateable
{
public virtual ICollection<Slide> Slides { get; set; }
到
public class SlideSet : UserModifiable.Properties, Validation.IValidateable
{
[DataMember]
protected virtual ICollection<Slide> Slides { get; set; }
但现在 DataContractSerializer 不再将其序列化为 xml。我对from the docs 的印象是DataMember 属性是唯一必要的。
这是我的序列化实现
public string ToXml(Object obj) {
// set up DataContractSerializer to use the .NET ProxyDataContractResolver, which helps us to serialize EF objects
var entityType = ObjectContext.GetObjectType(obj.GetType());
var knownTypes = ObjectContext.GetKnownProxyTypes();
var resolver = new ProxyDataContractResolver();
var serializer = new DataContractSerializer(entityType, entityType.Name, string.Empty, knownTypes, 1000, true, true, null, resolver);
// serialize to XML string
var stream = new MemoryStream();
serializer.WriteObject(stream, obj);
stream.Seek(0, SeekOrigin.Begin);
return Encoding.UTF8.GetString(stream.ToArray());
}
为什么我的受保护属性没有被序列化?
【问题讨论】:
-
@JustinNiessner 不,应该如何使用?只要事情是公开的,这一切都很好
-
@JustinNiessner 确实有效,谢谢。尽管由于某种原因,xml 现在是一种截然不同的格式
-
我将评论切换为答案,并将删除其他 cmets。
标签: c# .net xml-serialization datacontractserializer