C# 4 中的 Expando 对象
2010-09-30 22:46:55 来源:WEB开发网核心提示: .NET Framework 4 引入了一些能够超越静态类型的新功能,我在 2010 年 5 月刊中介绍了新的 dynamic 关键字,C# 4 中的 Expando 对象(2),在本文中,我会探讨对动态定义的类型(例如 Expando 对象)和动态对象的支持,该内容随后被加载到一个字符串中,以
.NET Framework 4 引入了一些能够超越静态类型的新功能。我在 2010 年 5 月刊中介绍了新的 dynamic 关键字。在本文中,我会探讨对动态定义的类型(例如 Expando 对象)和动态对象的支持。通过动态对象,您可以通过编程的方式定义类型的接口,而不必通过静态存储在某些程序集中的定义来读取它。动态对象结合了静态类型化对象的正式清洁度和动态类型的灵活性。
动态对象方案
动态对象的目标并不是要取代高质量的静态类型。在可预见的将来,静态类型仍然会保留在软件开发的基础中。通过静态类型化,您可以在编译时可靠地查找类型错误并生成代码;而且正因为如此,生成的代码无需在运行时进行检查,运行速度更快。此外,略过编译步骤的需求使得开发人员和架构师必须在设计软件和定义交互层的公共接口时格外小心。
然而,还是有这样的情况,您要通过编程的方式使用结构相对良好的数据块。理想情况下,您希望这些数据由对象提供。但是相反,无论您是通过网络连接获得还是从磁盘文件读取这些数据,您都是以纯数据流的形式收到的。您有两种选择来使用这些数据:使用间接方法或使用专门类型。
在第一种情况下,您需要采用泛型 API 作为代理,并为您安排查询和更新。在第二种情况下,您会有一个专门的类型,能够完美地为您处理的数据建模。问题是,谁来创建这样一个专门的类型?
在 .NET Framework 的某些部分中,已经有了一些很好的内部模块示例,示范如何为特定的数据块创建专门类型。一个明显的示例就是 ASP.NET Web 窗体。当您发出关于 ASPX 资源的请求时,Web 服务器会检索 ASPX 服务器文件的内容。该内容随后被加载到一个字符串中,以便在 HTML 响应中进行处理。这样您就有了一段结构相对良好的文本可供使用。
更多精彩
赞助商链接