2009-03-02 66 views
9

我在我的.NET項目中使用Settings類。我注意到在編輯器中,只有某些類型可用作Settings類中各個屬性的類型。如果我想擁有一個屬性,例如我的代碼或泛型集合中的枚舉屬性,該怎麼辦?我將如何實現?使用複雜類型的設置

我猜我可以在一個單獨的文件中使用部分類機制(因爲設置已經定義爲部分類),但我想看看是否有人同意這一點,如果可能有辦法在編輯器中完成。

+0

我不確定要正確理解你的問題,主要是關於編輯器的部分和「某些類型可用作類型」的部分,你能澄清它還是改述它? – mbillard 2009-03-02 18:55:51

+0

那麼,如果您在項目中創建了Settings.settings文件,那麼您可以使用編輯器來設置數據類型,名稱等設置。您從樹列表框中選擇一個設置的數據類型。該TreeList框只引用某些類型。我的程序集中的類型不是引用。 – 2009-03-02 20:41:57

回答

10

創建一個新的「設置」文件來添加複雜/用戶定義類型的選擇。 這是一個如何爲一個枚舉。

步驟1。創建設置文件

alt text

步驟2。瀏覽型

alt text

步驟3。選擇類型(Namespace.TypeName)

alt text

步驟4。ただ - 完成

alt text

0

在單獨的文件中作爲部分類的一部分做它是完全可以接受的。

0

如果你想能夠通過配置文件填充複雜的對象,我會建議使用一些依賴注入框架s.a. Spring.Net。

4

爲了得到一個自定義的類在列表中顯示,確保它有一個默認的構造函數作爲它的一個建設方案。我很難學會這個

2

要回答傑弗裏關於是否可以在設置文件中使用通用列表的評論/問題,答案是肯定的。您只需手動編輯Settings xml文件。舉例來說,如果我有下面的類:

public class UrlAlias 
{ 
    public string Name { get; set; } 
    public string BaseUrl { get; set; } 
} 

我可以通過右擊我的設置文件中創建這些列表,選擇打開方式...

然後選擇XML /文本編輯器,設置「類型」值的完全限定類名,即:

Type="System.Collections.Generic.List`1[MyProject.SomeNamespace.UrlAlias]" 

全設置的XML會是什麼樣子:

<?xml version='1.0' encoding='utf-8'?> 
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="MyProject.Properties" GeneratedClassName="Settings"> 
<Profiles /> 
    <Settings> 
    <Setting Name="UrlAliases" Type="System.Collections.Generic.List`1[CommonAddin.Data.DataSource.UrlAlias]" Scope="User"> 
     <Value Profile="(Default)"></Value> 
    </Setting> 
    </Settings> 
</SettingsFile> 

一旦你這樣做了,你應該有一個正確配置的你創建的自定義設置對象列表。