J'ai un type de base qui stocke des informations sur une question dans un groupe de questions pour un système qui génère des ensembles de questions pratiques pour aider les personnes à étudier pour des tests à choix multiples. Les seules informations qui y sont stockées sont les réponses, l'invite et le numéro de question. Lorsque je crée un test pratique, je dois augmenter le type avec des propriétés pour stocker la réponse soumise (le test peut être pris en partie), et je crée les classes suivantes:instanciation d'un enfant d'un type parent
public class MultipleChoiceQuestion
{
public Int32 Number { get; internal set; }
public String Prompt { get; internal set; }
public MultipleChoiceAnswer[] Choices { get; internal set; }
// constructors, etc...
}
public class PracticeTestQuestion : MultipleChoiceQuestion
{
public MultipleChoiceAnswer AnswerSelected { get; set; }
// is this right?
public PracticeTestQuestion(MultipleChoiceQuestion question)
{
...
}
}
Au départ, j'ai eu la MultipleChoiceQuestion en tant que membre de PracticeTestQuestion, mais il a ajouté beaucoup de points supplémentaires dans mes accesseurs de propriété, et donc je l'ai changé pour hériter de la classe comme indiqué ci-dessus. Actuellement, j'affecte toutes les propriétés ligne pour la ligne dans le constructeur, et cela me semble un peu lourd, et je me demandais s'il y avait une meilleure façon de procéder.
Le compilateur C# n'aime pas les types de migration ascendante pour de bonnes raisons. Ma question est la suivante: quelle est la meilleure façon d'instancier mes PracticeTestQuestions à partir de leurs types de base MultipleChoiceQuestion?
Merci, c'est beaucoup plus élégant et réutilisable que ce que je faisais? –