【发布时间】:2012-01-08 15:00:29
【问题描述】:
我正在创建一个通用的 Windows 窗体,它接受 T 并使用带有自定义属性的反射在运行时创建标签和输入控件。
例子:
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; }
}
您可以想象,表单背后的魔力将使用反射来确定数据类型、验证标准、要使用的首选控件类型等。
与其重新发明轮子,我认为如果有人知道这样的框架,那么值得一问。不用说,我正在寻找简单的东西而不是笨重的框架。
【问题讨论】:
-
我们在工作中使用Lightswitch 处理这类事情(有点)。
-
我只读过关于 LightSwitch 并没有尝试过。据我所知,它独立于 Visual Studio,更适合应用程序的子集。
-
我不确定您所说的“它独立于 Visual Studio”是什么意思。是的,它是一个单独的 Microsoft 产品,您必须获得许可。不,它不是一个单独的应用程序,它更像是一个 Visual Studio 插件。如果不知道您打算使用它创建哪种类型的应用程序,就很难知道 Lightswitch 是否适合。看到你在 Winforms 生成之后可能不是因为 Lightswitch 生成 Silverlight 应用程序。
-
嗯...自从我的帖子发布以来已经过去了大约 15 个小时,我终于想出了我自己的自定义属性框架和一个接受任何类同时支持大多数 clr 类型的 Windows 窗体。它允许您传递
的实例并提供完整的编辑功能,包括验证、帮助和应用/取消功能。 -
@M.Babcock,是的,我坚持使用 winforms 应用程序。我尝试编写的上述场景将使我不必自定义开发大约 800 个实体表单!
标签: c# winforms generics reflection