WEB开发网
开发学院软件开发C语言 C# 4 中的 Expando 对象 阅读

C# 4 中的 Expando 对象

 2010-09-30 22:46:55 来源:WEB开发网   
核心提示: 此代码使用 LINQ-to-XML 将原始内容加载到 Person 类的一个实例中:publicclassPerson{publicStringFirstName{get;set;}publicStringLastName{get;set;}publicStringGetFullName(){r

此代码使用 LINQ-to-XML 将原始内容加载到 Person 类的一个实例中:

public class Person { 
 public String FirstName { get; set; } 
 public String LastName { get; set; } 
 public String GetFullName() { 
  return String.Format("{0}, {1}", LastName, FirstName); 
 } 
}

.NET Framework 4 提供了一个不同的 API 来实现相同的目的。此 API 是新的 ExpandoObject 类的中心,更容易编写,而且不需要您规划、编写、调试、测试和维护 Person 类。让我们深入探讨一下 ExpandoObject。

使用 ExpandoObject 类

Expando 对象不是为 .NET Framework 发明的,事实上,它们比 .NET 还早出现几年。我第一次听到有人用这个术语来描述 JScript 对象是在 20 世纪 90 年代中期。Expando 是一种可扩充的对象,其结构完全是在运行时定义的。在 .NET Framework 4 中,您像使用传统的托管对象一样使用 Expando,不同之处在于其结构不在任何程序集外读取,而完全是动态构建的。

Expando 对象非常适合对动态变化的信息进行建模,例如配置文件的内容。让我们看看如何使用 ExpandoObject 类来存储前述 XML 文档的内容。图 3 中显示了完整的源代码。

图 3 使用 LINQ-to-XML 将数据加载到 Expando 对象中

public static IList<dynamic> GetExpandoFromXml(String file) { 
 var persons = new List<dynamic>(); 
 
 var doc = XDocument.Load(file); 
 var nodes = from node in doc.Root.Descendants("Person") 
       select node; 
 foreach (var n in nodes) { 
  dynamic person = new ExpandoObject(); 
  foreach (var child in n.Descendants()) { 
   var p = person as IDictionary<String, object>); 
   p[child.Name] = child.Value.Trim(); 
  } 
 
  persons.Add(person); 
 } 
 
 return persons; 
}

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:Expando 对象

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接