繁体   English   中英

DataContractSerializer不会序列化受保护的属性

[英]DataContractSerializer will not serialize protected properties

我将某类的公共财产更改为受保护的

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。 从文档中获得的印象是, 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());
    }

为什么我的受保护财产无法序列化?

如果希望XML通过DataContractSerializer正确地序列化,则不仅需要在每个序列化的属性上使用DataMemberAttribute ,还需要在类本身上使用DataContractAttribute

如文档中所述,这两者是并行的:

MSDN-DataContractSerializer

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM