使用反射进行 WebForms 自动生成(2)






1.87/5 (7投票s)
2005年6月24日
1分钟阅读

31890

328
本文继续介绍 Web Form 自动生成系列。
引言
在 上一篇文章 中,我向您介绍了一个项目,该项目通过类生成自动构建表单。
这次我们将探讨项目中使用的反射的基础知识。
Reflection(反射)
您可以使用反射来获取类的内部信息。
我不会向您讲解关于反射的所有内容,这个主题有很多内容可以讨论。有关更多信息,请访问我的 博客。
我将向您展示如何读取类的 public
属性并生成一个简单的表单。这是我们在生成方面的第一次尝试,而不是我们想要构建的最终组件。
使用 FormGen
首先,我们将创建一个名为 FormGen
的类。以下是该类的声明
class FormGen {
public static void Generate(Type classType, TextWriter output);
}
您可以在 ASP.NET 中以以下方式使用此类
class MyForm
{
public string Email;
public string Password;
public string Comments;
}
....
private void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
FormGen.Generate(typeof(MyForm), Response.Output);
}
实现 GenForm
您可以下载 GenForm 的实现。这是我们在第一次尝试探索这项技术中的基本实现。以下是实现一个简单的反射表单生成器的核心代码
using System;
using System.IO;
using System.Reflection;
...
public static void Generate(Type classType, TextWriter output)
{
WriteTableHeader(output);
FieldInfo[] fields = classType.GetFields ();
for (int i = 0; i < fields.Length; i++)
{
WriteRow(output, fields[i].Name,
InputText(fields[i].Name));
}
WriteTableFooter(output);
}
这非常有限…… 在这个实现中,我们只关注文本输入框。
下一步
在下一篇文章中,我们将使用属性来更好地处理表单的格式。
敬请期待 .... :)