2017-11-07 1 views
2

クラスにシリアル化可能な属性を追加しましたが、これによりクラスプロパティがシリアル化されています。クラスプロパティのシリアル化を防止します

私は、すべてのプロパティに[XmlIgnore]を使用しますが、まだそれはそれは、タグ -

<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> 
+2

は、いくつかのシリアル化技術(WCF、XmlSerializerを)があります。あなたはあなたのコード(および/または技術)をシリアライズするために使用しているコードを投稿してから、使用する属性についてアドバイスを与えることができます。私はWCFを考えていますが、データメンバーではないものはシリアル化しません。 – Spence

+0

私はWCFでコーディングしています。シリアライゼーションのために私はこのattributre [Serializable]だけを追加し、シリアライズしてデータを与えています。 はシリアライズのための余分なコードを書いていませんでした。 – kiran

+0

プロパティをプライベートにすると、シリアル化できなくなります。 – jdweng

答えて

0

がお手伝いします[JsonIgnore]または[IgnoreDataMember]属性、してみてください。

2

the [Serializable] attributeを使用している場合は、シリアル化したくないメンバー(パブリックまたはプライベート)で[NonSerialized]属性を使用する必要があります。クラスは[DataContract]属性でマークされていて、明示的にクラスにXmlSerialiserを使用しているとき[XmlIgnore]が使用されている場合

[DataMember]が使用されています。

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

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

あなたは「箱から出して」構成でWCFを使用している場合は、おそらく、メッセージをシリアライズするDataContractSerializerを使用して、ないXmlSerializerています。

シリアル化されていないご契約クラスのメンバーを持つために、あなたはIgnoredDataMember属性とそれらを飾る:

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

    [IgnoredDataMember] 
    public string FileSize { get; set; } 
} 
関連する問題