Доброго времени суток!
Есть библиотека классов, в которой есть класс, имеющий некоторые приватные поля:
class SomeClass
{
private char someSymbol;
private double someDouble;
}
Необходимо с помощью конфигурационного файла инициализировать данные поля значениями (к примеру, someSymbol = 'x', someDouble = 0.0001), чтобы при использовании данного класса эти значения уже лежали в данных полях.
Как правильно написать конфигурационный файл и как правильно считать с него значения? И, как я понимаю. для этих целей лучше использовать стандартный App.config файл.
UPD. Это должны быть неизменяемые параметры приложения, которые можно устанавливать снаружи.
Вариант с 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;
где-нибудь в начале программы.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости