Если у вас нет контроля над самой автогенерацией (например, каркас или сторонний генератор), ваши возможности несколько ограничены. На ум приходят два подхода: модифицировать сгенерированный код - что, как вы отметили, нецелесообразно для значительных и, возможно, накапливающихся во времени изменений - и / или создать производный класс и использовать его вместо использования auto. класс, созданный напрямую (при условии, что вы управляете кодом, который будет их использовать, что кажется вероятным).
Производный класс (наследующий автоматически сгенерированный класс) сможет использовать переопределение или новый в объявлениях методов, которые вы хотите заменить. Однако есть много предостережений в отношении этого подхода. Вы можете только «переопределить» метод, который был удален как виртуальный в базовом классе (или сам по себе был переопределением другой базовой виртуальной базы и т. Д.). Вы также можете заменить метод на «новый» в производном классе, но другой код в базовом классе не будет знать о вашей «новой» версии и не будет вызывать его (тогда как они будут вызывать ваше «переопределение», потому что они знать способ быть виртуальным). Есть также проблемы доступности; ваш производный класс не будет иметь доступа к закрытым членам базового класса.
Но для некоторых вещей, которые вы хотите сделать, это может сработать. В некоторых случаях вам, возможно, придется немного изменить автоматически сгенерированный код, например, добавив ключевое слово «virtual» или изменив «private» членов на «protected», чтобы вы могли получить к ним доступ из своего производного класса.
Добавлено: Конечно, вы также можете добавить новые члены в исходный сгенерированный класс в своем собственном постоянном файле для того же частичного класса, и этот код будет иметь доступ к закрытым членам класса. Это может быть другим способом предоставления вашему производному классу доступа к закрытым членам, например, путем создания защищенного свойства для переноса доступа к полю закрытого члена. Если вам не нужно вносить изменения в существующих методов, вам необязательно создавать производный класс, но в вашем примере говорилось о желании «переопределить» методы из автоматически сгенерированного кода, так что, предположительно, они там уже существуют.
Также обратите внимание, что файл Designer - например, для Form или UserControl - обычно не полностью перезаписывается, поэтому осторожные изменения вне кода, генерируемого ядром (например, не в области «Сгенерированный код конструктора форм Windows») (могут быть сохранены). Например, иногда необходимо добавить вызов к вашему собственному пользовательскому методу очистки в методе Dispose (...) в файле Designer.