хороший путь, но для этого надо научить MySettings копироваться, сравниваться и т.д. - причем для каждого нового контрола надо корректировать соответствующие методы
...
вручную я пишу только код копирования текущих настроек в контролы диалога и копирования из контролов обратно, по 2 строки на каждую настройку, причем эти же строки в варианте реализации со сравнением настроек тоже будут, только там в разы больше на каждый контрол придется написать
Наоборот, будут в разы меньше, ведь Вам надо сравнить просто данные - UI уже отработало. Это сравнение длинно но несложно, оно сплошь и рядом встречается, операции == и != интуитивны. А вот зарядить данные в UI и принять их оттуда - прекрасно автоматизируется и ходов здесь не один. Более того, connect легко поставить на автомат/пулемет (а не выписывать каждый раз). Ну а про "научить копироваться" неудобно и вспоминать - если нет "С" структур - то это уже готово
Не стоит гнаться за слишком умной системой которая все делает автоматом/интерактивно. Да, кое-что придется писать руками - и для каждого члена данных. Вопрос в том как сделать это 1 раз, а не долбить как дятел