Передача предмета в классе для использования в другой форме - PullRequest
0 голосов
/ 30 апреля 2011

Я собрал модель LINQ to XML, следуя Учебное пособие ScottGu , которое возвращает RSS-канал, который я затем могу использовать цикл foreach для получения данных, когда я помещаю их в те же .csfile.

Затем я поместил это в свой собственный класс для вызова из кода, но я не могу получить доступ к «элементам» с другой моей страницы для выполнения цикла ForEach.Я довольно новичок в этом, и мне было интересно, что мне нужно написать?

Вот мой читатель rss (собранный из scotts) в своем собственном файле .cs.Я могу получить доступ к DataAnswerFeed, но не "var items".Нужен ли мне способ вернуть значение?

public class DataAnswerFeed
    {
        public string AnsID { get; set; }
        public string AnsQueID { get; set; }
        public string AnsText { get; set; }
        public string Correct { get; set; }
    }
public class AnswerFeed
{

   public AnswerFeed()
    {
        WebClient feed = new WebClient();
        feed.DownloadStringCompleted += new DownloadStringCompletedEventHandler(feed_DownloadStringCompleted);
        feed.DownloadStringAsync(new Uri("http://myRssFeed.xml"));
    }

    private static readonly XNamespace m = "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata";

    public void feed_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
        XElement uri = XElement.Parse(e.Result);
        var items = (from item in uri.Descendants(m + "properties")
                     select new DataAnswerFeed()
                     {
                         AnsID = item.Descendants().ToList()[0].Value,
                         AnsQueID = item.Descendants().ToList()[1].Value,
                         AnsText = item.Descendants().ToList()[2].Value,
                         Correct = item.Descendants().ToList()[3].Value
                     }).ToList();

    }
}

}

На другой моей странице я пишу DataAnswerFeed newFeed = new DataAnswerFeed ();Затем я пытаюсь запустить цикл ForEach так же, как в классе, но получаю сообщение об ошибке, в котором говорится, что для GetEnumerator нет открытого определения?void.

 public void testPage_Loaded(object sender, RoutedEventArgs e)
    {
        // ForEach loop on the list
        foreach (DataAnswerFeed a in newFeed)
        {
            //Show test data to check working
            MessageBox.Show(a.AnsText);
        }

    }

Спасибо ...

1 Ответ

0 голосов
/ 30 апреля 2011

Добавьте это к вашему AnswerFeed классу

   public static List<DataAnswerFeed> Answers = new List<DataAnswerFeed>();

затем присвойте ему результат вашего запроса

   Answers = (from item in uri.Descendants(m + "properties") ...

В testPage_Loaded:

   foreach (DataAnswerFeed a in AnswerFeed.Answers)

Статика нехорошо, но она будет работать;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...