2017-10-25 7 views
-3

シリアル化を初めて使用していて、問題に直面しています。私はメソッドを含むことができる直列化可能なクラスを持っています。しかし、そのメソッドのため、シリアライザの初期化中にエラーが発生しています(メソッドにコメントするとエラーはスローされません)。 質問 - クラス内でメソッドをマークする方法があるので、シリアライザはそれを無視して正しく動作しますか?.net 4.6 Serializableクラスのメソッド

これは私のシリアライズ可能なクラスです:私は、データのプライバシーの面でそれを修正ほとんどない

[Serializable] 
    public class Key 
    { 
     [XmlAttribute("Id")] 
     public Guid Id { get; set; } 

     [XmlAttribute("Kid")] 
     public Guid Kid { get; set; } 

     [XmlElement("CEK")] 
     public string CEK { private get; set; } 

     public string Foo() 
     {...} 
    } 

が、それは話題には影響しません。ここで

は、私はシリアル化を行う方法です。

 StringReader strReader = null; 
      XmlSerializer serializer = null; 
      XmlTextReader xmlReader = null; 
      Object obj = null; 
      try 
      { 
       strReader = new StringReader(xml); 
       serializer = new XmlSerializer(objectType, 
        new XmlRootAttribute 
        { 
         ElementName = "someNS", 
         Namespace = "url.to.some.namespace" 
        }); 
       xmlReader = new XmlTextReader(strReader); 
       obj = serializer.Deserialize(xmlReader); 
     } 

エラーは、この部分にスローされます。

serializer = new XmlSerializer(objectType, 
    new XmlRootAttribute 
    { 
     ElementName = "someNS", 
     Namespace = "url.to.some.namespace" 
    }); 

UPDATE: 右は、エラーを忘れてしまいました。

のSystem.InvalidOperationException:それは次のようであるMyProject.Objects.Key「タイプ を反映してエラーが発生しました 『』」

と内側exeptions:

と、InvalidOperationException:プロパティ 'キー' を反映したエラーが発生しました。 InvalidOperationException:タイプ 'MyProject.Objects.Key'を反映するエラーがありました。それを修正

+1

あなたは何が間違いであるか教えてください。 – JLRishe

+1

[MCVE]コードの提供に関するガイダンスを確認してください...一般的にメソッドを無視してシリアライズするので、エラーを再現するための実際のエラーメッセージやコードはなく、間違ったことを推測するのは難しいです。 –

+0

シリアル化に 'BinaryFormatter'を使いたいのでなければ、' [Serializable] 'は必要ありません。 – taffer

答えて

1

[XmlElement("CEK")] 
public string CEK { private get; set; } 

このプロパティは、例外を発生させました。シリアライズ可能なクラスでプライベートメソッドを取得することはできません。

関連する問題