2011-01-11 10 views
2

Ich habe den folgenden Code -Objektverweis nicht auf eine Instanz eines Objekts festgelegt

private static void convert() 
    { 
     string csv = File.ReadAllText("test.csv"); 
     XDocument doc = ConvertCsvToXML(csv, new[] { "," }); 
     doc.Save("update.xml"); 

     XmlTextReader reader = new XmlTextReader("update.xml"); 
     XmlDocument testDoc = new XmlDocument(); 
     testDoc.Load(@"update.xml"); 

     XDocument turnip = XDocument.Load("update.xml"); 
     webservice.function[] test = new webservice.function[1]; 
     webservice.function CallWebService = new webservice.function(); 

     foreach(XElement el in turnip.Descendants("row")) 
     { 
          test[0].com = System.Convert.ToInt32(el.Descendants("var").Where(x => (string)x.Attribute("name") == "com").SingleOrDefault().Attribute("value").Value); 
      test[0].Centre = el.Descendants("var").Where(x => (string)x.Attribute("name") == "Centre").SingleOrDefault().Attribute("value").Value; 
      test[0].CCentre = el.Descendants("var").Where(x => (string)x.Attribute("name") == "CCentre").SingleOrDefault().Attribute("value").Value; 

      MessageBox.Show(test[0].person, "person"); 
      MessageBox.Show(System.Convert.ToString(test[0].actually), "Actually"); 
      MessageBox.Show(System.Convert.ToString(test[0].com), "Com"); 

      CallWebService.updateFeedStatus(test); 
     } 

Es wird kommen mit dem Fehler von - Nullreferenceexception unhandled war und sagte, dass das Objekt Verweis auf eine Instanz nicht gesetzt von ein Objekt. Der Fehler tritt bei der ersten Zeile Test [0] .account auf.

Wie kann ich das schaffen?

+2

post bitte einen Stacktrace, sonst könnte irgendwo sein. – BrokenGlass

+1

Wir debuggen im Dunkeln - welche Zeile? –

+0

Entschuldigung habe ich bearbeitet. – Ebikeneser

Antwort

6

Das Initialisieren eines Arrays initialisiert die Objekte im Array nicht. Versuchen Sie, die zweite Zeile unter (vorausgesetzt, Sie den Standard-Konstruktor verwenden möchten):

webservice.singleSummary[] test = new webservice.singleSummary[1]; 
test[0] = new webservice.singleSummary(); 
2
  1. Setzen Sie einen Debugger auf den Prozess.
  2. Identifizieren Sie, welche Codezeile den Fehler generiert. (Angenommen, Visual Studio)
  3. Testen Sie die Objektreferenzen in dieser Zeile eins nach dem anderen, bis Sie feststellen, welche die Nullreferenz hat.
  4. Setzen Sie einen Null-Check vor der Zeile, um das Problem zu beheben.
1

Ich bin Ihre xml erraten hat einen Namespace, die Sie brauchen in Ihrem xname für die gewünschten Elemente enthalten, aber wie die anderen Kommentare erwähnen, gibt es wenig, was ohne vollständige Offenlegung getan werden kann.

Verwandte Themen