2012-10-31 81 views
-1

我想使對象的列表作爲對象列表。無法添加對象列出<object>

List<FeedItem> List_feeds = new List<FeedItem>(); 
FeedItem objFeedItem = new FeedItem(); 

objFeedItem.feedId = feedNode.SelectSingleNode("id").InnerText; 
. 
. 
. 
. 
objFeedItem.text = feedNode.SelectSingleNode("text").InnerXml; 
objFeedItem.imgthumb = thumbImage; 
objFeedItem.imglarge = largeImage; 

List_feeds.Add(objFeedItem); 

錯誤:「對象引用不設置到對象的實例。」

有人問了compleate代碼聽到它..

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Xml; 
using System.Net; 

namespace FSB.Classes 
{ 
    public class FeedItem 
    { 
     public string feedId{ get; set; } 
     public string feed_publishDate{ get; set; } 
     public string feed_createDate{ get; set; } 
     public string feed_modifieddate{ get; set; } 
     public string title{ get; set; } 
     public string description{ get; set; } 
     public string text{ get; set; } 
     public string imgthumb{ get; set; } 
     public string imglarge{ get; set; } 
     public string addedBy{ get; set; } 
     public string edited{ get; set; } 
     public string createDate{ get; set; } 
     public string updateDat { get; set; } 
    } 


    public class Feeds 
    { 

     protected string newsURL; 
     protected List<FeedItem> List_feeds; 

     public Feeds() 
     { 
      newsURL = @"http://api.brafton.com/55f3e621-2223-48de-bafc-4f3774e72533/news/"; 
      List<FeedItem> List_feeds = new List<FeedItem>(); 
     } 


     public void updateAllFeeds() 
     { 
      getFeedList(); 


     } 

     private void getFeedList() 
     { 
      try 
      { 
       XmlDocument objFeedDoc = new XmlDocument(); 
       var nodeFeedList = getFeedNodes(); 

       foreach (XmlNode objFeedNode in nodeFeedList) 
       { 
        string feedDetailhref = objFeedNode.Attributes["href"].Value; 
        string strFeedDetail = getFeedDetailXml(feedDetailhref); 

        objFeedDoc.LoadXml(strFeedDetail); 
        XmlNode feedNode = objFeedDoc.SelectSingleNode("newsItem"); 

        FeedItem objFeedItem = new FeedItem(); 


        objFeedItem.feedId =feedNode.SelectSingleNode("id").InnerText; 


        objFeedItem.feedId    = feedNode.SelectSingleNode("id").InnerText; 
        objFeedItem.feed_publishDate = feedNode.SelectSingleNode("publishDate").InnerText; 
        objFeedItem.feed_createDate  = feedNode.SelectSingleNode("createdDate").InnerText; 
        objFeedItem.feed_modifieddate = feedNode.SelectSingleNode("lastModifiedDate").InnerText; 
        objFeedItem.title    = feedNode.SelectSingleNode("headline").InnerText; 
        objFeedItem.description   = feedNode.SelectSingleNode("htmlMetaDescription").InnerText; 
        objFeedItem.text    = feedNode.SelectSingleNode("text").InnerXml; 


        string thumbImage = ""; 
        string largeImage = ""; 
        /* 
        try 
        { 

         string pictureURL = feedNode.SelectSingleNode("photos").Attributes["href"].Value; 
         XmlNode imageNode = getFeedImage(pictureURL); 
         foreach (XmlNode pic in imageNode) 
         { 
          if (pic.SelectSingleNode("type").InnerText.ToLower() == "large") 
          { 
           largeImage = pic.SelectSingleNode("url").InnerText; 

          } 
          if (pic.SelectSingleNode("type").InnerText.ToLower() == "thumb") 
          { 
           thumbImage = pic.SelectSingleNode("url").InnerText; 

          } 
         } 

        } 
        catch (Exception ex) 
        { 
         Console.Write(ex.Message); 
        } 
        */ 
        objFeedItem.imgthumb = thumbImage; 
        objFeedItem.imglarge = largeImage; 




        List_feeds.Add(objFeedItem); 
       } 

      } 
      catch (Exception ex) 
      { 
       Console.Write(ex.Message); 
      } 
     } 


     private XmlNode getFeedImage(string pictureURL) 
     { 
      try 
      { 
       XmlDocument picDoc = new XmlDocument(); 
       var client = new WebClient(); 
       var content = client.DownloadString(newsURL); 

       picDoc.LoadXml(content); 
       return picDoc.SelectSingleNode("photos/photo/instances"); 
      } 
      catch (Exception ex) 
      { 
       Console.Write(ex.Message); 
      } 
      return null; 

     } 

     /*Extract the newsListItem from the xml Feeds */ 
     private XmlNodeList getFeedNodes() 
     { 
      try 
      { 
       XmlDocument docFeed = new XmlDocument(); 
       string strFeedXml = getFeedXml(); 
       docFeed.LoadXml(strFeedXml); 
       return docFeed.SelectNodes("news/newsListItem"); 
      } 
      catch (Exception ex) 
      { 
       Console.Write(ex.Message); 
      } 
      return null; 
     } 

     /*Get the Xml Feeds From the Live Server*/ 
     private string getFeedXml() 
     { 
      try 
      { 
       var client = new WebClient(); 
       var content = client.DownloadString(newsURL); 
       return content; 
      } 
      catch (Exception ex) 
      { 
       Console.Write(ex.Message); 
      } 
      return null; 
     } 

     /*Get the Xml Feeds Details From the Live Server*/ 
     private string getFeedDetailXml(string newsDetailURL) 
     { 
      try 
      { 
       var client = new WebClient(); 
       var content = client.DownloadString(newsDetailURL); 
       return content; 
      } 
      catch (Exception ex) 
      { 
       Console.Write(ex.Message); 
      } 
      return null; 

     } 
    } 



} 
+3

在哪一行發生錯誤? –

+0

最後一行'List_feeds.Add(objFeedItem);' – Champ

+1

後棧跟蹤也。 – Azodious

回答

1

你的

protected List<FeedItem> List_feeds; 

聲明從不實例。

將其更改爲

protected List<FeedItem> List_feeds = new List<FeedItem>(); 

,並從構造函數中刪除此:

List<FeedItem> List_feeds = new List<FeedItem>(); 

這是因爲在構造函數中的代碼是簡單地創建一個同名的局部變量爲你的職業等級變量,而不是真正實例化一個類級別的對象(我認爲你的意圖)

+0

是肯定它是... – Champ

+0

它的工作...謝謝...但我做了相反的,我改變了從'列表 List_feeds =新列表();'到'List_feeds =新列表 ();' – Champ

+0

你能告訴我哪一個更好....實例化時聲明或在構造函數? – Champ

0
var idNode = feedNode.SelectSingleNode("id"); 
if (idNode != null) { 
    objFeedItem.feedId = idNode.InnerText; 
    ... 
} 

var textNode = feedNode.SelectSingleNode("text"); 
if (textNode != null) { 
    objFeedItem.text = textNode.InnerXml; 
    ... 
} 
0
List<FeedItem> List_feeds = new List<FeedItem>(); 

在構造函數中,您正在實例化一個局部變量而不是全局變量。