2009-07-18 70 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