Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DataContractSerializer不会序列化受保护的属性_C#_.net_Xml Serialization_Datacontractserializer - Fatal编程技术网

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

C# DataContractSerializer不会序列化受保护的属性,c#,.net,xml-serialization,datacontractserializer,C#,.net,Xml Serialization,Datacontractserializer,我将一个类的公共属性更改为protected public class SlideSet : UserModifiable.Properties, Validation.IValidateable { public virtual ICollection<Slide> Slides { get; set; } 为什么我的受保护属性没有被序列化?如果您想用DataContractSerializer正确序列化XML,您不仅需要在每个序列化属性上使用DataMemberAttr

我将一个类的公共属性更改为protected

public class SlideSet : UserModifiable.Properties, Validation.IValidateable
{
    public virtual ICollection<Slide> Slides { get; set; }

为什么我的受保护属性没有被序列化?

如果您想用
DataContractSerializer
正确序列化XML,您不仅需要在每个序列化属性上使用
DataMemberAttribute
,还需要在类本身上使用
DataContractAttribute

如文件所述,这两项工作将齐头并进:


@JustinNiessner不,那应该怎么用?只要事情进展顺利,这一切都很好public@JustinNiessner那确实有用,谢谢。虽然由于某些原因,xml现在是一种明显不同的格式,但我将我的注释切换为答案,并将删除其他注释。谢谢,知道我生成的xml为什么看起来不同吗?(出于我的目的,我觉得很奇怪)
public class SlideSet : UserModifiable.Properties, Validation.IValidateable
{
    [DataMember]
    protected virtual ICollection<Slide> Slides { get; set; }
    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());
    }