通用Windows表单模板

时间:2012-01-08 15:00:30

标签: c# winforms generics reflection

我正在创建一个接受T的通用Windows窗体,并使用自定义属性的反射在运行时创建标签和输入控件。

示例:

class GenericForm<T>: Form where T : ICloneable<T>  
{  
}  

以下是表单代码的上一个问题的链接:SO Question

此表单可以接受以下实体类作为示例:

class Vehicle: ICloneable<Vehicle>  
{  
    public int Id { get; set; }  
    public int Name { get; set; }  
    public int Description { get; set; }  
}  

您可以想象,表单背后的魔力将使用反射来确定数据类型,验证标准,要使用的首选控件类型等。

我认为如果有人知道这样的框架,那么我认为不应该重新发明轮子。不用说,我正在寻找一些简单而不是庞大的框架。

2 个答案:

答案 0 :(得分:1)

eXpressApp Framework (XAF)可以动态生成UI。在一个简单的例子中,程序员只会创建业务实体,而根本不关心UI。

答案 1 :(得分:0)

据我所知,没有框架可以在运行时生成UI代码。之前有很多工具(代码生成器)可以做到这一点。但是你没有“仅”改变代码的优势 - 你需要一个额外的步骤来启动代码生成器。

如果你真的想在运行时创建UI信息 - 我会为你的属性生成属性,这会告诉你的UI生成器如何处理这个属性(如果没有给出属性 - 你的数据类型有一个默认值) 。这是一个很多编码,但可以节省你在未来的中小型项目的时间。

您可以做的另一件事是将您的UI信息外部化为XML文件,并为该文件生成一个生成器。实际上有一个框架可以做到这一点 - 看看re-motion框架。我不知道UI的部分是否是免费的,但它有一些功能(即mixins)可以帮助您完成任务。