Доступные типы файлов настроек .NET - PullRequest
2 голосов
/ 29 июля 2010

При изменении файла настроек .NET мне предоставляется выбор типов настроек.Однако не все типы, доступные моему проекту, отображаются даже в окне «Обзор».

Что определяет, можно ли использовать тип для настройки файла настроек?

У меня естьЯ создал тип, который хотел бы сохранить, и хочу узнать, что мне нужно изменить, чтобы использовать его в файле настроек.

(VS 2008 - .Net 3.5)

Ответы [ 2 ]

0 голосов
/ 04 октября 2012

Какие типы появляются в окне «Просмотр» - я считаю, что ответ - сериализуемые типы. Ниже приведен пример, который работал для меня (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>
0 голосов
/ 29 июля 2010

Что вам нужно сделать, так это немного "покопаться" с файлами .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;
    }
}
...