2009-06-04 33 views
10

在我的設置文件中,我想有一個類型爲List(Myclass)的設置....我無法在網絡上找到任何這樣做的設置。可能嗎?你可以在你的設置文件中有一個通用的列表(T)嗎?

+1

你是什麼意思的「在我的設置文件中」 – Bob 2009-06-04 17:14:40

+0

你打算從T繼承混合類型嗎? – 2009-06-04 17:24:23

+1

settings.Settings包含在Visual Studio中的窗體項目中的文件。允許您指定用戶和應用程序範圍設置並在代碼中引用它們。 – Codezy 2009-06-04 17:25:23

回答

8

我假設你在談論用戶設置...

我不知道,如果你可以指定一個泛型類型,但如果你創建自己的非泛型類型,從列表繼承(的MyClass ),那麼你可以指定這種類型作爲你的用戶設置沒有任何問題。

喜歡的東西:

Public Class MyClassList 
    Inherits List(Of MyClass) 

End Class 

那麼你應該能夠瀏覽MyClassList。

-1

是的,這是可能的,只需鍵入列表<SomeType> 手動進入類型字段,它應該工作。

0

您可以將您的List<T>序列化爲一個字符串,並將其放入您的設置文件中。

會這樣嗎?

12

我同意Meta-Knight的繼承解決方案是最好的,但是可以通過手動編輯設置XML文件來完成此操作。在解決方案資源管理器中,轉到:解決方案>項目>屬性> Settings.settings。右鍵點擊Settings.settings並選擇「Open With」。選擇「XML(文本)編輯器」。然後插入以下內容<Settings>

<Setting Name="TestGenericList" Type="System.Collections.Generic.List&lt;int&gt;" Scope="User"> 
    <Value Profile="(Default)" /> 
</Setting> 

保存,它的工作原理。

不幸的是,它似乎不適用於需要兩種或更多類型的泛型類型,因爲該屬性中不允許使用逗號。即使實體編碼它(&#x002C;)也沒有幫助。

下會導致錯誤「路徑非法字符」當你去編輯設置文件中的設置設計師

<Setting Name="TestGenericDictionary" Type="System.Collections.Generic.Dictionary&lt;string&#x002C;string&gt;" Scope="User"> 
    <Value Profile="(Default)" /> 
</Setting> 
3

我可能有點晚了遊戲中提供瞭解決這一答案,但是您可以將泛型設置屬性包含在項目中不同文件的分部類中,因此Settings Designer不會覆蓋您添加的任何自定義代碼。

在我的情況下(使用VB.NET),我想在My.Settings中存儲Dictionary(Of String, String),但字典必須序列化爲Binary,因爲它不容易序列化爲XML。我刪除了從設計師的設置屬性,然後添加的文件Settings.Extended.vb我用下面的代碼裏面的項目:

'** Keeping My.Settings.FormLayouts out of Settings.Designer.vb so that this custom code is not overwritten by Visual Studio.' 

Namespace My 
    Partial Friend NotInheritable Class MySettings 
     <Configuration.UserScopedSettingAttribute(), _ 
     DebuggerNonUserCodeAttribute(), _ 
     Configuration.SettingsSerializeAs(Configuration.SettingsSerializeAs.Binary)> _ 
     Public Property FormLayouts() As Dictionary(Of String, String) 
     Get 
      Return CType(Me("FormLayouts"), Dictionary(Of String, String)) 
     End Get 
     Set(ByVal value As Dictionary(Of String, String)) 
      Me("FormLayouts") = value 
     End Set 
     End Property 
    End Class 
End Namespace 

的FormLayouts屬性仍然My.Settings的一部分,將被載入並照常保存,但在應用程序的Settings Designer中添加更多設置不會覆蓋上面的代碼。

相關問題