Может ли кто-нибудь посоветовать мне, какой подход принять при написании конструкторов C#?
В других языках, таких как C++, все в порядке - вы обычно не делаете видимыми внутренние поля и предоставляете им getters/setters.
Это означает, что вы можете предоставить вашему классу конструкторы, которые инициализируют все/некоторые из ваших локальных членов и будут счастливы.
C#, однако, имеет properties, что позволяет нам написать что-то вроде:
Class x = new Class { Field1 = new Field1 ...., Field2 = new Field2 }
Это позволяет привязать конструкцию объекта и, как я полагаю, может удалить много конструкторов, что потребовалось бы, если бы у нас не было properties.
Объединяя это со значениями по умолчанию для свойств, как я предполагаю, мы можем полностью избавиться от неспециализированных конструкторов, которые фактически выполняют некоторую работу.
Теперь - можно ли удалить избыточные конструкторы и разрешить создание объекта с помощью инициализации поля?
Каковы недостатки такого подхода? Может ли кто-нибудь дать общие рекомендации о объединении использования полей и конструкторов, некоторые rules of thumb, возможно?
Спасибо.