2016-12-06 2 views
0

Ich versuche derzeit, (mit Code) eine .xml-Datei zu kopieren und habe es auf viele verschiedene Arten angegangen. Dieser Weg scheint mir jedoch derjenige zu sein, den ich am meisten erhalte, wie ich es vorher getan habe, sondern eine console.writeline-Ausgabe zu erstellen. Ich kann es nicht scheinen, um es für eine console.out zu arbeiten, wenn ich das .xml-Layout produziere. Es gibt mir die folgenden FehlerParameterloser Konstruktor bei der Verwendung von XmlSerializer

„nicht serialisiert werden kann, weil es nicht einen parameterlosen Konstruktor hat“

könnte bitte jemand mir dabei helfen.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Xml; 
using System.Xml.Linq; 
using System.Xml.Serialization; 

namespace ConsoleApplication1 
{ 
class Program 
{ 
    const string FILENAME = @"SmallResults.xml"; 
    static void Main(string[] args) 
    { 
     List<BasicEvent> NewBasicEvent = new List<BasicEvent>(); 
     XmlTextReader fileReader = new XmlTextReader("SmallResults.xml"); 
     XmlDocument xml = new XmlDocument(); 
     xml.Load(fileReader); 
     XmlNodeList BasicEvents = xml.SelectNodes("/HiP-HOPS_Results/FaultTrees/FMEA/Component/Events/BasicEvent"); 
     if (BasicEvents != null) 
     { 
      XmlNode[] nodearray = BasicEvents.Cast<XmlNode>().ToArray(); 
      for (int i = 0; i < BasicEvents.Count; i++) 
      { 
       NewBasicEvent.Add(new BasicEvent(nodearray[i].FirstChild.NextSibling.InnerText, nodearray[i].FirstChild.NextSibling.NextSibling.InnerText, nodearray[i].FirstChild.NextSibling.NextSibling.InnerText, nodearray[i].FirstChild.NextSibling.NextSibling.NextSibling.InnerText)); 
       new XmlSerializer(typeof(BasicEvent)).Serialize(Console.Out, nodearray); 
      } 
     } 


    } 
} 
public class FMEA 
{ 
    public List<Component> components { get; set; } 
} 
public class Component 
{ 
    public string CompName { get; set; } 
    public string BasicEventID { get; set; } 
    public List<BasicEvent> basicevents { get; set; } 
} 
public class Events 
{ 
} 
public class BasicEvent 
{ 
    public string BasicEventName { get; set; } 
    public string BasicEventShortName { get; set; } 
    public string BasicEventDescription { get; set; } 
    public string BasicEventUnavalability { get; set; } 
    public List<Effects> effects { get; set; } 

    public BasicEvent(string basiceventname, string basiceventshortname, string basiceventdescription, string basiceventunavalability) 
    { 
     BasicEventName = basiceventname; 
     BasicEventShortName = basiceventshortname; 
     BasicEventDescription = basiceventdescription; 
     BasicEventUnavalability = basiceventdescription; 
    } 
+1

Da der Fehler sagt, dass es keine parameterlosen Konstruktor zur Verfügung Standard ist. Die Deserialisierung muss vorhanden sein, damit das Objekt erstellt und die Werte festgelegt werden können. Füge einen zu der Klasse hinzu. –

Antwort

4

Die Nachricht in der Ausnahme ist ziemlich klar!

den Standardkonstruktor hinzufügen dann:

public BasicEvent(){} 
Verwandte Themen