同じタイプの複数のオプションの入力パラメータを受け入れるメソッドをコード化UIで作成しています。私の質問は、このような方法を書くベストプラクティスです。 (インターネット上の多くの場所で提案されている)メソッドのオーバーロードや名前付き引数とオプションのパラメータの組み合わせを使用する必要があります。 方法は、実際には以下のフィールドに値を入力しようとしている:
コード化されたUI:同じデータ型の複数のオプションパラメータを持つメソッドを作成する最適な方法は何ですか?
名:文字列:必須
年齢:文字列:必須
場所:文字列:サインアップするオプション
チェックボックス:オプション
チェックボックスの場合チェックされています:下記のフィールドに詳細を入力してください。
名前付き引数とオプションのパラメータの組み合わせを使用している場合、メソッド定義のパラメータのリストは長く見えますが、読みやすく、メソッドのオーバーロードがわからない場合は、パラメータを指定すると、目的を解決します。 私はC#コーディングに新しいですので、どんなポインタでも大変感謝しています。
私の提案は、さまざまなタイプの情報を包むラッパーとして機能する2つのクラスを作成することです。あなたは特に、すべてのパラメータが同じタイプを持っていると言いました - しかし、私はすべてのパラメータが異なる目的を持っていると賭けています。それに基づいてオブジェクトを構築します。たとえば 'checkbox'がチェックされている場合、その情報を保持するために' NewAccount'オブジェクトを渡すことができます。 'Name'、' age'、 'location'は全て' Person'オブジェクトの一部です。これにより、メソッドのシグネチャが簡単になり、コードをポイントまで保持します。 –
リチャードに感謝します。同じ種類のフィールドのラッパーとしてクラスを作成してクラスオブジェクトを渡すことは、それを行うためのすっきりした方法だと私は同意します。しかし、私の方法はどのパラメータをどのオプションフィールドに入れるのかを知る方法はありますか?例:電子メール、性別、オーダータイプの3つのオプションフィールドがあり、電子メール、オーダータイプのみを渡したい場合は、どうすればこの方法を理解できますか? – user5252179
ラッパーオブジェクトにフィールドがある場合、電子メールと言うことができ、そのフィールドがヌルである場合(あなたに与えられていないため設定していないため)、メソッドはそれを心配していません。要は、オブジェクトは必要な値の単なるコンテナーです。値が設定されていなければ、それは存在せず、気にする必要はありません。必要な変数でないかぎり、例外がスローされ、フィールドが必要であることをユーザーに伝える必要があります。 –