2017-10-25 4 views
-3

Ich bin neu in der Serialisierung und stehe vor einem Problem. Ich habe eine serialisierbare Klasse, die eine Methode enthalten muss. Aber wegen dieser Methode bekomme ich einen Fehler während der Initialisierung des Serialisierers (wenn ich die Methode kommentiere, werden keine Fehler geworfen). Die Frage - gibt es eine Möglichkeit, Methode in der Klasse zu markieren, so Serializer würde es ignorieren und ordnungsgemäß funktionieren?.net 4.6 Methoden in der Klasse "Serializable"

Das ist mein serializable Klasse:

[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() 
     {...} 
    } 

ich ein wenig haben von Daten modifiziert es in Bezug auf die Privatsphäre, aber es hat keinen Einfluss auf das Thema.

Hier ist, wie ich die Serialisierung:

 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); 
     } 

Fehler an dieser Stelle geworfen wird:

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

UPDATE: rechts, über den Fehler vergessen. Es ist die folgende:

System.InvalidOperationException: 'Es gab einen Fehler Typ reflektierende 'MyProject.Objects.Key'.'

und innere exeptions:

InvalidOperationException: Es gab einen Fehler Eigenschaft widerspiegelt 'Key'. InvalidOperationException: Es gab einen Fehler, der den Typ "MyProject.Objects.Key" widerspiegelt.

+1

Sie haben vergessen, uns zu sagen, was der Fehler ist. – JLRishe

+1

Bitte überprüfen Sie [MCVE] Anleitung zur Bereitstellung von Code ... Serialisiert in der Regel zu ignorieren Methoden, also ohne tatsächliche Fehlermeldung oder vollständigen Code, um den Fehler zu reproduzieren ist es schwer zu erraten, was falsch ist. –

+0

Und '[Serializable]' wird nicht benötigt, es sei denn, Sie möchten 'BinaryFormatter' für die Serialisierung verwenden. – taffer

Antwort

1

es Korrigiert:

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

Diese Eigenschaft Ausnahme verursacht hat; Sie können keine private Methode in der serialisierbaren Klasse abrufen.

Verwandte Themen