Я прочитал все вопросы, связанные с этой темой, и они все объясняют, почему конструктор по умолчанию на struct
недоступен в C #, но я пока не нашел ни одного человека, который предлагал бы общий порядок действий при столкновении эта ситуация.
Очевидное решение - просто преобразовать struct
в class
и разобраться с последствиями.
Есть ли другие варианты сохранить его как struct
?
Я столкнулся с этой ситуацией с одним из наших объектов API внутренней коммерции. Дизайнер преобразовал его из class
в struct
, и теперь конструктор по умолчанию (который раньше был закрытым) оставляет объект в недопустимом состоянии.
Я думал, что если мы собираемся сохранить объект как struct
, должен быть введен механизм проверки достоверности состояния (что-то вроде свойства IsValid
). Я был встречен с большим сопротивлением, и объяснение «кто бы ни использовал API, не должен использовать конструктор по умолчанию», комментарий, который определенно вызвал у меня удивление. (Примечание: рассматриваемый объект создается «должным образом» с помощью статических фабричных методов, а все остальные конструкторы internal
.)
Все ли без раздумий просто конвертируют свои struct
в class
в этой ситуации?
Редактировать: Я хотел бы увидеть некоторые предложения о том, как сохранить этот тип объекта как struct
- рассматриваемый выше объект гораздо лучше подходит как struct
, чем как class
.