2011-01-11 2 views
2

J'ai le code suivant -référence d'objet non définie à une instance d'un objet

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

Il est à venir avec l'erreur - NullReferenceException était non gérée, en disant que la référence d'objet non définie à une instance de un objet. L'erreur se produit sur le premier test de ligne [0] .account.

Comment puis-je obtenir plus tard?

+2

poster une pile s'il vous plaît, sinon pourrait être n'importe où. – BrokenGlass

+1

Nous déboguons dans le noir - quelle ligne? –

+0

désolé j'ai modifié. – Ebikeneser

Répondre

6

L'initialisation d'un tableau n'initialise pas les objets dans le tableau. Essayez d'ajouter la deuxième ligne ci-dessous (en supposant que vous souhaitez utiliser le constructeur par défaut):

webservice.singleSummary[] test = new webservice.singleSummary[1]; 
test[0] = new webservice.singleSummary(); 
2
  1. Mettez un débogueur sur le processus.
  2. Identifiez la ligne de code qui génère l'erreur. (En supposant que Visual Studio)
  3. Testez les références d'objet sur cette ligne un par un jusqu'à ce que vous déterminiez lequel a la référence null.
  4. Mettez une vérification null avant la ligne pour résoudre le problème.
1

Je devine que votre xml a un espace de noms que vous devez inclure dans votre xname pour les éléments souhaités, mais comme l'autre commentaires mentionnent, il y a peu qui peut être fait sans divulgation complète.

Questions connexes