Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.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# 防止序列化类属性_C#_Xml - Fatal编程技术网

C# 防止序列化类属性

C# 防止序列化类属性,c#,xml,C#,Xml,我将属性serializable添加到类中,但由于这个原因,类属性正在序列化 我对所有属性使用了[XmlIgnore],但它仍在序列化属性 [Serializable] public class Document { [DataMember] [XmlIgnore] public string FileURL { get; set; } [DataMember] [XmlIgnore] public string FileSize { get;

我将属性serializable添加到类中,但由于这个原因,类属性正在序列化

我对所有属性使用了
[XmlIgnore]
,但它仍在序列化属性

[Serializable]
public class Document
{

    [DataMember]
    [XmlIgnore]
    public string FileURL { get; set; }

    [DataMember]
    [XmlIgnore]
    public string FileSize { get; set; }       

}
它像下面的标签一样序列化-

<a:_x003C_DocumentDetails_x003E_k__BackingField>
  <a:Document>                  
    <a:_x003C_FileType_x003E_k__BackingField>PDF</a:_x003C_FileType_x003E_k__BackingField>
    <a:_x003C_FileURL_x003E_k__BackingField>C:/log/Test.pdf</a:_x003C_FileURL_x003E_k__BackingField>                    
  </a:Document>
</a:_x003C_DocumentDetails_x003E_k__BackingField>

PDF
C:/log/Test.pdf

您是否根据文档尝试了IgnoreDataMemberAttribute


尝试
[JsonIgnore]
[IgnoreDataMember]
属性,这将对您有所帮助。

如果您正在使用,您需要对任何不希望序列化的成员(公共或私有)使用
[NonSerialized]
属性

[DataMember]
用于将类标记为
[DataContract]
属性,而
[XmlIgnore]
用于在类上显式使用XmlSerialiser

[Serializable]
public class Document {
  [NonSerialized]
  public string FileURL { get; set; }

  [NonSerialized]
  public string FileSize { get; set; }
}

如果您使用带有“开箱即用”配置的WCF,那么您可能使用的是
DataContractSerializer
来序列化消息,而不是
XmlSerializer

为了使合同类的成员不被序列化,可以使用以下属性对其进行修饰:

[Serializable]
public class Document
{
    [DataMember]
    public string FileURL { get; set; }

    [IgnoredDataMember]
    public string FileSize { get; set; }
}

有几种序列化技术(WCF、XMLSerializer)。您能否发布用于序列化代码(和/或技术)的代码,然后我们可以就使用哪个属性向您提供建议。我在考虑WCF,但它不会序列化任何非数据成员的内容。我正在用WCF进行编码。对于序列化,我只添加了这个attributere[Serializable],它正在序列化并提供数据。未编写任何用于序列化的额外代码。将属性设置为私有将阻止序列化。