不能忽略UWP中的DataMember(C#)

时间:2017-08-11 20:35:38

标签: c# serialization uwp

我需要序列化一个包含StorageFile(一个不能被序列化的类)作为属性的类。虽然我将该属性标记为[IgnoreDataMember],但XmlSerializer会继续尝试将其序列化,但不期望的是。

澄清问题的摘要:

[DataContract]
public class Attachment
{
    [DataMember]
    public string FileName { get; set; }

    [IgnoreDataMember]
    public StorageFile File { get; set; }

    [DataMember]
    public Boolean UserCreatedContent { get; set; }
}

3 个答案:

答案 0 :(得分:1)

尝试使用XmlIgnoreAttribute属性

答案 1 :(得分:1)

如果您使用XmlIgnore

,请使用XmlSerializer属性
public class Attachment
{
    public string FileName { get; set; }

    [XmlIgnore]
    public StorageFile File { get; set; }

    public Boolean UserCreatedContent { get; set; }
}

答案 2 :(得分:0)

您似乎将XmlSerializerDataContractSerializer混合了一点。 DataContractAttribute是控制DataContractSerializer的属性,但您使用的是XmlSerializer。这意味着属性没有意义,因为序列化器与this article中的序列化器不同。

要使用XmlSerializer控制序列化,您应该查看the attributes that control XML serialization。这意味着您不需要太多属性,只需使用XmlIgnore一次性使用XmlSerializer在序列化期间忽略该属性。

public class Attachment
{
    public string FileName { get; set; }
    [XmlIgnore]
    public StorageFile File { get; set; }
    public Boolean UserCreatedContent { get; set; }
}