获取对象属性

本文关键字:属性 取对象 获取 | 更新日期: 2023-09-27 18:16:14

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

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

谢谢

获取对象属性

匿名类型不容易在方法之间共享。

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

代替

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

将var widgets更改为动态widgets

例子
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);
    }
}