2009-07-18 73 views
1

我的典型应用程序有几个文本框,检查按钮,单选按钮等等。我总是希望加载用户在程序启动时最后一次使用的设置,并且还希望在用户单击“保存设置”或关闭应用程序时保存设置。当用户尝试保存设置时,我必须检查每个控件是否存在输入错误(有时它们必须具有最大长度,其他时间仅限于上限,其他时间是其他时间,对于它们没有规则所有,每次都会有所不同),并且只有在一切正常的情况下,我才会让他保存选项。如果出现错误,则不保存任何选项,并且我的错误控制提供程序将弹出应该放入该控件的输入类型信息的描述。(.net)设计问题的种类

我一直在为我所有的项目从头开始设计,但这样做很痛苦。所以我想也许现在是时候做一些图书馆来帮助我了。我想一开始,也许它会是一个不错的主意,有我所有的表格上都将是这个保存/载入过程具有与它们相关联的属性的一部分,这样的事情

public delegate bool InputIsOkHandler(); 

public class OptionsAttribute : Attribute { 

public Control controlRef; 
public InputIsOkHandler IsInputOk; 
public string errorMessageToShowOnErrorProvider; 

    public OptionsAttribute(Control controlRef, InputIsOkHandler inputHandler, string errMessage) { 
... 
} 
} 

控件这里的主要问题是,当我宣布属性在给定的变种:

[Options(...)] 
TextBox textBox1 = new TextBox(); 

我会得到

错误1的属性参数必须是常量表达式,typeof运算的表达式或数组创建表达式属性参数类型。

所以我想这种方法不是最好的。你们在这种情况下会做什么?你会使用属性?你会使用其他机制?

谢谢

+0

您可以在“选项”属性的这些括号中发布您的内容吗?您收到的错误表明您错误地使用了该属性,但没有理由不能使用它们。 – Jacob 2009-07-18 19:08:57

+0

问题是构造函数需要初始化一个对象,并且你不能使用属性来完成它。 – 2009-07-18 19:28:52

回答

0

在ASP.NET 2.0中支持的个性化和用户配置文件可能是实现您的目标的好方法。 您可以查看本文的MSDN文章以了解概述Personalization in ASP.NET 2.0