0

我有一个类,它可以生成一个对话框,其中包含通过类属性上的 Attribute 定义的控件。例子:

public class MyClass
{
    [DialogControl("Total Amount")]
    public Int32 Total { get; set; }
}

使用反射,我为属性生成了一个带有 NumericUpDown 的对话框Total。对话框关闭后,对话框中的值将设置到属性中。这很好用。

但是,该属性使我的班级有些混乱。我想探索其他设计或获得类似功能的可能性,而无需向类中的属性添加属性。

您将如何设计和实施这样的系统?

编辑:假设MyClass已经设计了类似的类并且将是面向客户的。进行类到对话框转换的代码是内部的。

4

1 回答 1

0

我将使用流畅的界面。这是一段工作代码,我将其用作项目的概念证明。我也不喜欢属性,所以用这种方法你不应该注释你的类

var builder = new DialogBuilder<Foo>();

        var dlg = builder
            .CreateTab("Foo")
                .CreateGroup("Bar")
                    .CreateCtrl("ctrl_Id", "Id"/*[Label]*/, Align.Left)
                    .BindTo(x => x.Id)
            .Build();

此代码创建一个带有选项卡和组的表单,然后添加一个控件,该控件绑定到 Foo 类的属性 Id。(您还可以指定验证,在某些条件下显示,在某些条件下隐藏等等)正如您所见,这种方法是非侵入性的,您不必为了让您的对话框工作而触摸您的模型类。如果你愿意,你可以从这里下载整个项目

http://www.amiralles.com.ar/descargas/fluentdialog.zip

PS:没有文档,只有单元测试。

于 2012-05-08T13:25:47.300 回答