获取对象属性

时间:2011-11-29 23:42:31

标签: c# visual-studio visual-studio-2010 c#-4.0 silverlight-4.0

我有一个代码,它返回一个小部件对象

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 个答案:

答案 0 :(得分:4)

无法在各种方法之间轻松共享匿名类型。

你应该创建一个类来存储这些数据。

答案 1 :(得分:2)

而不是

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

答案 2 :(得分:1)

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