Я создаю класс, который содержит параметры / значения конфигурации для моего приложения. Я хотел бы связать какое-то событие get и set со всеми опциями в моем классе опций. Мой класс выглядит примерно так:
public class Options
{
public int Option1 { get; set; }
public bool Option2 { get; set; }
public string Option3 { get; set; }
// etc.
}
Я не хочу реализовывать методы получения и установки для всех этих свойств, которые будут выглядеть одинаково. В идеале я хочу, чтобы все эти свойства вели себя так, как если бы они были определены примерно так:
private int _option1;
public int Option1
{
get => option1;
set
{
_option1 = value;
OnOptionChanged("Option1", value);
}
}
Я знаю, что вышеупомянутое возможно и будет работать, но это не очень удобно. У меня были некоторые мысли о том, чтобы мой Options
класс расширил DynamicObject
и переопределил TrySetMember
, но это вызывается только тогда, когда член не существует в классе. Мне нужно, чтобы мои свойства опций были определены, так как мне нужно добавить XML документацию к каждому из них.
Итак, наконец, есть ли способ реализовать вышесказанное, не добавляя вызов события для каждого из моих свойств сеттеры? В качестве альтернативы, есть ли способ документировать (автоматически, а затем экспортировать в обычный XML файл документации) свойства, которые строго не присутствуют в классе?