В настоящее время я создаю оболочку для WkHtmlToPdf, чтобы упростить создание консольных переключателей, но я ищу лучший способ сериализации свойств в соответствующие переключатели без необходимости определения метода для каждого отдельного переключателя.Многие из переключателей - простые bools, которые, если они установлены в true, должны быть включены.Есть ли способ использовать атрибуты, которые могли бы упростить сериализацию класса?
Вот упрощенная версия класса свойств:
public class PdfOptions
{
public bool Book { get; set; }
public bool Collate { get; set; }
public Dictionary<string, string> Cookies { get; set; }
public string CoverUrl { get; set; }
public Dictionary<string, string> CustomHeaders { get; set; }
public bool DebugJavascript { get; set; }
public bool DefaultHeader { get; set; }
public bool DisableExternalLinks { get; set; }
public bool DisableInternalLinks { get; set; }
public bool DisableJavascript { get; set; }
}
Теоретически, я мог бы сделать что-то с атрибутами, чтобы сделать этовыглядит следующим образом:
public class PdfOptions
{
[WkSwitch(Name = "--book")]
public bool Book { get; set; }
[WkSwitch(Name = "--collate")]
public bool Collate { get; set; }
[WkCollectionSwitch(Name = "--cookie {key} {value}")]
public Dictionary<string, string> Cookies { get; set; }
[WkValueSwitch(Name = "--collate {value}")]
public string CoverUrl { get; set; }
[WkCollectionSwitch(Name = "--custom-header {key} {value}")]
public Dictionary<string, string> CustomHeaders { get; set; }
[WkSwitch(Name = "--debug-javascript")]
public bool DebugJavascript { get; set; }
[WkSwitch(Name = "--default-header")]
public bool DefaultHeader { get; set; }
[WkSwitch(Name = "--disable-external-links")]
public bool DisableExternalLinks { get; set; }
[WkSwitch(Name = "--disable-internal-links")]
public bool DisableInternalLinks { get; set; }
[WkSwitch(Name = "--disable-javascript ")]
public bool DisableJavascript { get; set; }
}
Но я не совсем уверен, с чего начать, чтобы заставить генераторы генерировать, когда класс сериализован / используется.