2013-07-30 2 views
2

У меня есть один класс:Магазин массив пользовательского класса в файле настроек

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.

+0

Посмотрите на реализацию своего собственного обработчика конфигурации, эти может иметь несколько записей и может быть настроен на наличие нескольких полей. http://msdn.microsoft.com/en-us/library/2tw134k3(v=vs.100).aspx – ChrisBint

ответ

0

Вы можете объявить 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> 

Вы можете увидеть, как работа с разделами здесь: How to create custom config section in app.config?.

1

Вам нужно будет начать с создания параметра в файле настроек проекта, назовем его 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&lt;ConsoleApplication1.CustomClass&gt;" 
      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(); 
    } 
} 
Смежные вопросы