このトピックに関連するすべての質問を読みました。それらはすべて、C#でデフォルトのコンストラクターが使用できない理由を示していますstructが、この状況に直面したときに一般的なアクションを提案する人はまだ見つかりません。
struct明らかな解決策は、単にをaに変換classし、その結果に対処することです。
それをとして維持する他のオプションはありますstructか?
内部コマースAPIオブジェクトの1つでこの状況に遭遇しました。設計者はそれをaclassからに変換しましstructた。デフォルトのコンストラクター(以前はプライベートでした)は、オブジェクトを無効な状態のままにします。
オブジェクトをとして保持する場合structは、状態の妥当性をチェックするメカニズム(IsValidプロパティのようなもの)を導入する必要があると思いました。私は多くの抵抗に直面し、「APIを使用する人は誰でもデフォルトのコンストラクターを使用すべきではない」という説明に、確かに眉をひそめました。(注:問題のオブジェクトは静的ファクトリメソッドを介して「適切に」構築され、他のすべてのコンストラクターはinternalです。)
structこの状況では、誰もが考え直すことなく、単に自分のsをclassesに変換しているのでしょうか。
編集:このタイプのオブジェクトを-として保持する方法についてのいくつかの提案を見たいと思います-上記の問題のオブジェクトは、としてよりもとしてstructはるかに適しています。structclass