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