对象列表.无法将对象添加到list< object> [英] List of objects. Unable to add object to list<object>

查看:86
本文介绍了对象列表.无法将对象添加到list< object>的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将对象列表设置为

I am trying to make list of object as

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

错误:对象引用未设置为对象的实例."

Error: "Object reference not set to an instance of an object."

有人要求提供完整的密码.

Some One asked for the compleate Code hear it is..

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;

        }
    }



}

推荐答案

您的声明

protected List<FeedItem> List_feeds;

从未实例化.

将其更改为

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

并将其从构造函数中删除:

and remove this from the constructor:

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

这是因为构造函数中的代码只是创建了一个与您的类级变量同名的局部变量,而不是实际实例化一个类级对象(正如我想的那样)

This is because the code in the constructor was simply creating a local variable of the same name as your class level variable, instead of actually instantiating a class level object (as I think you intended)

这篇关于对象列表.无法将对象添加到list&lt; object&gt;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆