C# 4 中的 Expando 对象
2010-09-30 22:46:55 来源:WEB开发网若要对此数据进行操作,您需要了解您对服务器控件有哪些引用,然后妥善实例化这些引用并将它们链接到一个页面中。这些完全能够通过为每个请求使用一个基于 XML 的解析程序来实现。但如果这么做,您就需要为每个请求额外付出解析程序的成本,而这项成本有可能是不可接受的。
考虑到因解析数据而额外增加的成本,ASP.NET 团队决定引入一个一次性步骤,将标记解析到一个类中,而使该类能够动态编译。这样,通过从 Web 窗体页的代码隐藏类派生出的一个专门类,将使用一段类似以下代码的简单标记:
<html>
<head runat="server">
<title></title>
</head>
<body>
<form id="Form1" runat="server">
<asp:TextBox runat="server" ID="TextBox1" />
<asp:Button ID="Button1" runat="server" Text="Click" />
<hr />
<asp:Label runat="server" ID="Label1"></asp:Label>
</form>
</body>
</html>
图 1 显示了由标记创建出来的类的运行时结构。灰色的方法名称指的是内部过程,用于将带有 runat=server 元素的元素解析到服务器控件的实例中。
图 1 动态创建的 Web 窗体类的结构
您可以将此方法应用到几乎任何情况中,只要您的应用程序需要反复接收外部数据以进行处理。以流入应用程序的 XML 数据流为例。有多种 API 可以处理 XML 数据,范围从 XML DOM 到 LINQ-to-XML。在任何情况下,您都必须通过查询 XML DOM 或 LINQ-to-XML API 进行间接处理,或使用相同的 API 将原始数据解析到专门对象中。
更多精彩
赞助商链接