Я собрал модель 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);
}
}
Спасибо ...