私は、マルチパートの質問への反応とそれらを評価/行動するロジックを含むサブクラスを設計しようとしています。例えば、FoodSurveyは(としてマルチパートの質問をモデル化する最良の方法は何ですか
BaseSurvey
Name
Date
Submit()
FoodSurvey <- BaseSurvey
DoYouLikeIcecream
IfSoWhatFlavour
WouldYouLikeAFreeSample
SendSample(flavour)
...
FoodSurveyは数十以上の質問がある可能性があり、私は他の人に基づいて各回答をvaldateだけでなく、FoodSurveyに固有のいくつかの他のプロセスを実行する必要がありますBaseSurveyのサブクラスになりますCarSurveyとは反対の)複数の回答に依存する可能性があります(例:SendSample(rockyRoad))。
私は各調査で質問コレクションを持つQuestionクラスのアイデアを思いついたが、これはすぐに調査用の「エンジン」のように見え始めた.1)過労であった、2)エラーが発生しやすく、 3)答えを検証するために使用できるロジックが制限されていました。
このタイプのクラスの設計に関する承認されたベストプラクティスはありますか?
重要な場合、クラスは最終的にはASP.NETのWebサイトまたはWebアプリケーションで使用されます。
ありがとう@eulerfx。これはすでに私が演奏したものに非常に近いです。 Questionクラスが好きです。後でUIビルドを実行するために、Prompt、HelpText、ControlTypeプロパティを追加できます。 1つは、QuestionAnswer(例:ブール値、文字列、整数など)でvarible Answerタイプを許可する方法です。これは、それぞれの質問が別々のプロパティであった場合には問題にはなりませんでした。何か案は? –
「タイプ」と回答を強制する方法はたくさんあります。 1つの簡単な方法は、各質問にQuestionType列挙を関連付けることであり、バリデータはその答えがその種類を満たすことを確認することができる。これにより、文字列に任意のタイプのデータを含めることができ、簡単にバインドすることができるため、回答を文字列のままにすることができます。別のオプションは、各質問に検証Regexを関連付けることです。さらに別のオプションは、特定のタイプをサポートするために回答クラスをサブタイプ化することです。 – eulerfx
私は、これをフォームに記入するという自然な動作を模倣するので、すべてを文字列として格納することも考えました。サブタイプメソッドがどのように使われるのか、例えば整数型の答えの例を挙げてください。 –