我正在创建一个通用的Windows窗体,它接受T,并使用带有自定义属性的反射在运行时创建标签和输入控件。
示例:
class GenericForm<T>: Form where T : ICloneable<T>
{
}
这里有一个链接到表单代码的前一个问题:SO问题。
此表单可以接受以下实体类作为示例:
class Vehicle: ICloneable<Vehicle>
{
public int Id { get; set; }
public int Name { get; set; }
public int Description { get; set; }
}
正如你所能想象的,表单背后的魔力将使用反射来确定数据类型、验证标准、要使用的首选控制类型等。
与其重新发明轮子,我认为如果有人知道这样的框架,那么值得向SO提问。不用说,我正在寻找一些简单的东西,而不是一个庞大的框架。
eXpressApp Framework(XAF)可以动态生成UI。在一个简单的例子中,程序员将只创建业务实体,而根本不关心UI。
据我所知,没有在运行时生成UI代码的框架。以前有很多工具(代码生成器)可以做到这一点。但是,你不会有"只"更改代码的优势——你需要额外的步骤来启动代码生成器。
如果你真的想在运行时创建UI信息——我会为你的属性生成Attributes,这会告诉你的UI生成器如何处理这个属性(如果没有给定Attribute——为你的数据类型设置默认值)。这需要大量的编码,但可以为将来的中小型项目节省时间。
您可以做的另一件事是将UI信息外部化到XML文件中,并为该文件提供生成器。实际上,有一个框架可以做到这一点——看看重新启动的框架。我不知道UI的这一部分是否是免费的,但它有一些功能(即mixin)可以帮助你完成任务。