我有一个代码,它返回一个小部件对象
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
感谢
答案 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);
}
}