Сохранить массив пользовательских классов в файле настроек
У меня есть один класс:
public class CustomClass
{
public string Columns;
public string Filter;
public string SourceDB;
public string SourceTable;
public string DestinationDB;
public string DestinationTable;
}
В пользовательских настройках мне нужно хранить массив CustomClass. Это потому, что мне нужно, чтобы пользователь мог указать несколько CustomClass в файле app.config.
2 ответа
Вам придется начать с создания настройки в файле настроек вашего проекта, давайте назовем его CustomClasses
, Следующая часть немного сложнее, так как включает в себя редактирование XML файла Settings.settings:
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings"
CurrentProfile="(Default)"
GeneratedClassNamespace="ConsoleApplication1.Properties"
GeneratedClassName="Settings">
<Profiles />
<Settings>
<Setting Name="CustomClasses"
GenerateDefaultValueInCode="false"
Type="System.Collections.Generic.List<ConsoleApplication1.CustomClass>"
Scope="User">
</Setting>
</Settings>
</SettingsFile>
Если вы откроете свой файл Settings.Designer.cs, вы должны иметь:
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
public global::System.Collections.Generic
.List<ConsoleApplication1.CustomClass> CustomClasses {
get {
return ((global::System.Collections.Generic
.List<ConsoleApplication1.CustomClass>)(this["CustomClasses"]));
}
set {
this["CustomClasses"] = value;
}
}
Вы можете сохранить настройки в вашем приложении:
class Program
{
static void Main(string[] args)
{
Properties.Settings.Default.CustomClasses = new List<CustomClass>() {
new CustomClass(){Columns="columns1"},
new CustomClass(){Columns="columns2"},
new CustomClass(){Columns="columns3"},
new CustomClass(){Columns="columns4"}
};
Properties.Settings.Default.Save();
}
}
Вы можете объявить CustomClassSection в App.config и объявить внутри коллекции экземпляров CustomClass. Что-то вроде:
<configuration>
<configSections>
<section name="CustomClassSection" type = "A type of class section " />
</configSections>
</configuration>
<CustomClassSection>
<CustomClass Columns="column1" Filter="filter1" SourceDB="sourcedb1" SourceTable="sourcetable1" DestinationDB="destdb1" DestinationTable="desttable1"/>
<CustomClass Columns="column2" Filter="filter2" SourceDB="sourcedb2" SourceTable="sourcetable2" DestinationDB="destdb2" DestinationTable="desttable2"/>
...
</CustomClassSection>
Вы можете увидеть, как работать с разделами здесь: Как создать пользовательский раздел конфигурации в app.config?,