修改.NET設置文件時,我可以選擇設置的類型。但是,即使在「瀏覽」窗口中,也不是我的項目可以訪問的所有類型都可以顯示。.NET設置文件可用類型
什麼決定了一種類型是否可用於設置文件設置?
我有一個我創建的類型,我希望能夠保存,並且我想知道我需要更改它以便在設置文件中使用它。
(VS 2008 - 淨3.5)
修改.NET設置文件時,我可以選擇設置的類型。但是,即使在「瀏覽」窗口中,也不是我的項目可以訪問的所有類型都可以顯示。.NET設置文件可用類型
什麼決定了一種類型是否可用於設置文件設置?
我有一個我創建的類型,我希望能夠保存,並且我想知道我需要更改它以便在設置文件中使用它。
(VS 2008 - 淨3.5)
你需要做的是與.settings 「黑客」 和周圍的文件了.Designer.cs一點點,如記錄here什麼。
如果您在項目中創建一個自定義類型,如:
namespace MyApp
{
public struct MyType
{
public string StringValue;
}
}
得到它顯示爲在設置編輯器的選項,您需要添加使用該類型的第一個設定值該文件,如下所示:
SettingsFile.settings:
<Setting Name="SettingNameGoesHere" Type="MyApp.MyType" Scope="User">
<Value Profile="(Default)" />
</Setting>
SettingsFile.Designer.cs
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
public global::MyApp.MyType SettingNameGoesHere {
get {
return ((global::MyApp.MyType)(this["SettingNameGoesHere"]));
}
set {
this["SettingNameGoesHere"] = value;
}
}
什麼類型出現在「瀏覽」窗口中 - 我相信答案是可序列化的類型。下面是一個適用於我的例子(VS 2012,.Net 4.0)。
類公共序列化的成員:
class Person {
public string Name;
public int Age;
}
什麼在設計師設定值寫:
<Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name>John</Name>
<Age>42</Age>
</Person>
取決於你認爲的「可序列化」。你的例子中你沒有'Person'類的'SerializableAttribute',但它仍然可以在設置中使用。例如儘管'typeof(Person).IsSerializable'爲'false',它仍然可以在設置中使用。 – 2012-10-04 20:14:51
任何可以XML序列化是可用的(即有一個默認的構造函數的任何東西) 。即使那些沒有出現在瀏覽器中,也可以在文本框中輸入完整的類型名稱來添加該類型的設置。 – 2012-10-04 20:15:56