.NET 設定ファイルを変更するとき、設定の種類を選択できます。ただし、「参照」ウィンドウであっても、プロジェクトでアクセス可能なすべてのタイプが表示されるわけではありません。
タイプが設定ファイルの設定に使用できるかどうかを判断するものは何ですか?
保存できるようにしたい作成したタイプがあり、設定ファイルで使用するために何を変更する必要があるかを知りたいです。
(VS 2008 - .Net 3.5)
.NET 設定ファイルを変更するとき、設定の種類を選択できます。ただし、「参照」ウィンドウであっても、プロジェクトでアクセス可能なすべてのタイプが表示されるわけではありません。
タイプが設定ファイルの設定に使用できるかどうかを判断するものは何ですか?
保存できるようにしたい作成したタイプがあり、設定ファイルで使用するために何を変更する必要があるかを知りたいです。
(VS 2008 - .Net 3.5)
「参照」ウィンドウに表示されるタイプ-答えはシリアル化可能なタイプだと思います。以下は私のために働いた例です(VS 2012、.Net4.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>
ここに記載されているように、あなたがする必要があるのは、.settingsファイルと.Designer.csファイルを少し「ハック」することです。
プロジェクトで次のようなカスタムタイプを作成する場合:
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;
}
}