C# и задание параметров в config - файле

357
30 марта 2017, 17:49

Доброго времени суток!

Есть библиотека классов, в которой есть класс, имеющий некоторые приватные поля:

class SomeClass
{
    private char someSymbol;
    private double someDouble;
}

Необходимо с помощью конфигурационного файла инициализировать данные поля значениями (к примеру, someSymbol = 'x', someDouble = 0.0001), чтобы при использовании данного класса эти значения уже лежали в данных полях. Как правильно написать конфигурационный файл и как правильно считать с него значения? И, как я понимаю. для этих целей лучше использовать стандартный App.config файл.

UPD. Это должны быть неизменяемые параметры приложения, которые можно устанавливать снаружи.

Answer 1

Вариант с app.config проще всего реализовать, как написано здесь:

У вас в app.config должен появиться код наподобие такого:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="epsilon" value="0.0001" />
  </appSettings>
</configuration>

Для чтения используйте такой код:

using System.Configuration;
using System.Globalization;
string epsilonString = ConfigurationManager.AppSettings["epsilon"];
double epsilon = double.Parse(epsilonString, CultureInfo.InvariantCulture);

Вам понадобится добавить ссылку на сборку System.Configuration, если ещё не добавили.

Точно так же добавляется символьное или строковое значение (вам понадобится ещё одна секция add).

Имея два значения, лучше всего скормить из объекту через его конструктор:

class SomeClass
{
    private char someSymbol;
    private double epsilon;
    public SomeClass(char someSymbol, double epsilon)
    {
        this.someSymbol = someSymbol;
        this.epsilon = epsilon;
    }
}

Однако же, если речь идёт о конфигурации библиотеки, я бы сделал это по-другому: создал бы в библиотеке класс, описывающий конфигурацию, и использовал бы его. Например, часто можно обойтись статической конфигурацией:

public static LibraryConfiguration
{
    static public double Precision { get; set; } = 0.1;
    // тут другие конфигурационные свойства
}

Таким образом, приложение, использующее библиотеку, сможет отконфигурировать её:

LibraryNamespace.LibraryConfiguration.Precision = 0.0001;

где-нибудь в начале программы.

READ ALSO
Перевод кода из C# в Python [требует правки]

Перевод кода из C# в Python [требует правки]

Объясните логику функции:

338
Как узнать абсолютную величину ячейки TableLayoutPanel

Как узнать абсолютную величину ячейки TableLayoutPanel

У меня окно принимает динамическое количество параметров, которые я складываю при помощи LayoutPanelно как после формирования окна получить высоту...

325
Заполнение ComboBox из List&lt;string&gt; из кода

Заполнение ComboBox из List<string> из кода

Есть код, беру имена всех картинок в гриде и записываю в ListПотом для combobox задаю этот List как источник данных

252