C# 通用Windows窗体模板

C# 通用Windows窗体模板,c#,winforms,generics,reflection,C#,Winforms,Generics,Reflection,我正在创建一个通用Windows窗体,它接受T并使用带有自定义属性的反射在运行时创建标签和输入控件 例如: class GenericForm<T>: Form where T : ICloneable<T> { } 类GenericForm:其中T:ICloneable的形式 { } 这里有一个链接,指向表单代码的上一个问题: 此表单可以接受以下实体类作为示例: class Vehicle: ICloneable<Vehicle>

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

例如:

class GenericForm<T>: Form where T : ICloneable<T>  
{  
}  
类GenericForm:其中T:ICloneable的形式
{  
}  
这里有一个链接,指向表单代码的上一个问题:

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

class Vehicle: ICloneable<Vehicle>  
{  
    public int Id { get; set; }  
    public int Name { get; set; }  
    public int Description { get; set; }  
}  
class车辆:可克隆
{  
公共int Id{get;set;}
公共int名称{get;set;}
公共int描述{get;set;}
}  
可以想象,表单背后的魔力是使用反射来确定数据类型、验证标准、要使用的首选控件类型等


我认为与其重新发明轮子,不如问问是否有人知道这样的框架。不用说,我正在寻找简单的框架,而不是笨重的框架。

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

如果您真的想在运行时创建UI信息,我会为您的属性生成属性,这将告诉您的UI生成器如何处理此属性(如果没有提供属性,则为您的数据类型设置默认值)。这需要大量的编码,但可以为将来的中小型项目节省时间


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

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

我们在工作中使用这种类型的东西(有点)。我只读过LightSwitch,没有尝试过。据我所知,它独立于Visual Studio,更适合应用程序的子集。我不确定“它独立于Visual Studio”是什么意思。是的,它是一个单独的Microsoft产品,您必须获得许可。不,它不是一个单独的应用程序,它更像是一个VisualStudio插件。如果不知道您打算用它创建什么类型的应用程序,就很难知道Lightswitch是否适合。看到您正在使用Winforms生成,可能不是因为Lightswitch生成Silverlight应用程序。。。我的文章发表已经15个小时了,我终于想出了自己的自定义属性框架和一个windows窗体,它可以接受任何类,同时支持大多数clr类型。它允许您传递的实例,并提供完整的编辑功能,包括验证、帮助和应用/取消功能。@M.Babcock,是的,我一直在使用winforms应用程序。我试图编写的上述场景将使我不必自定义开发大约800个实体表单!Re-Motion似乎有我需要的东西,但与LPGL有关,我不能在商业产品中使用它,因为它有太多的灵活性。是的,使用属性是我当前动态生成UI的方式。好吧,那么我也会选择属性。我自己也研究过这个领域,但是没有任何东西可以动态生成UI——但是有很多不太好用的代码生成器。eXpressApp框架似乎包含了我所需要的一切。现在只需为年度订阅做预算:)。