получить свойства объекта - PullRequest
0 голосов
/ 30 ноября 2011

У меня есть код, который возвращает мне объект виджетов

XDocument loaded = XDocument.Parse( xml );

var widgets = from x in loaded.Descendants( "widget" )
              select new
              {
                  URL = x.Descendants( "url" ).First().Value,
                  Category = x.Descendants( "PortalCategoryId" ).First().Value
              };

Я пытаюсь создать метод, который будет возвращать виджеты объектов, а затем мне нужен другой метод, с помощью которого я могу вызывать его и получать доступ к значениям. Я новичок в C # и использую vs2010

спасибо

Ответы [ 3 ]

4 голосов
/ 30 ноября 2011

Анонимные типы не могут быть легко разделены между методами.

Вы должны создать класс для хранения этих данных.

2 голосов
/ 30 ноября 2011

вместо

XDocument loaded = XDocument.Parse( xml ); 

var widgets = from x in loaded.Descendants("widget") 
              select new // Dynamic/Anonymous class
              { 
                URL = x.Descendants( "url" ).First().Value, 
                Category = x.Descendants( "PortalCategoryId" ).First().Value 
              }; 

Было бы лучше создать класс бетона

//Widget.cs
Public class Widget
{
  public string URL { get; set; }
  public string Category { get; set; }
}

//Code somewhere else..
XDocument loaded = XDocument.Parse(xml); 

IEnumerable<Widget> widgets = 
              from x in loaded.Descendants("widget") 
              select new Widget()
              { 
                URL = x.Descendants( "url" ).First().Value, 
                Category = x.Descendants( "PortalCategoryId" ).First().Value 
              }; 
1 голос
/ 30 ноября 2011

изменить виджеты var на динамические виджеты

пример

using System;
using System.Linq;

class Sample {
    static object junk(){
        var widgets = new { URL = new Uri("http://test.com/"), Category = "address" };
        return widgets;
    }
    static void Main(){
        dynamic widgets = junk();//var widgets = .. //NG
        Console.WriteLine(widgets.URL);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...