2011-11-29 209 views
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#和Visual Studio 2010和使用

感谢

回答

4

匿名类型不能轻易跨越的方法来共享。

您应该创建一个类来存储该数据。

+0

做ü有我的代码示例?我会怎么做?谢谢 – Autolycus

+0

http://msdn.microsoft.com/en-us/library/ms173109.aspx http://msdn.microsoft.com/en-us/library/x9fsa0sw.aspx – SLaks

+0

是C#新手我不知道如何我会做到这一点 – Autolycus

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

这将是最好创建一个concreate类

//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

变化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); 
    } 
} 
+0

那会做什么? – Autolycus

+0

可以像使用的那样使用widgets.URL,widgets.Category。 – BLUEPIXY

+0

@Erik建议比较好,但是不用创建类,何时处理保持匿名类是动态类型,随意使用。 – BLUEPIXY