У меня есть базовый тип, который хранит информацию о вопросе в пуле вопросов для системы, которая генерирует практические наборы вопросов, чтобы помочь людям учиться для тестов с несколькими вариантами ответов. Единственная информация, которая хранится в нем - это ответы, подсказка и номер вопроса. Когда я создаю тренировочный тест, мне нужно дополнить тип некоторыми свойствами, чтобы сохранить отправленный ответ (тест можно пройти по частям), поэтому я создал следующие классы:
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)
{
...
}
}
Изначально у меня был MultipleChoiceQuestion в качестве члена PracticeTestQuestion, но он добавил много дополнительных точек в средства доступа к моим свойствам, поэтому я изменил его, чтобы наследовать класс, как указано выше. В настоящее время я назначаю все строки свойств для строки в конструкторе, но это кажется довольно громоздким, и мне было интересно, есть ли лучший способ.
Компилятору C # не нравится увеличивать размеры по уважительным причинам, поэтому мой вопрос: каков наилучший способ создания экземпляров моих PracticeTestQuestions из их базовых типов MultipleChoiceQuestion?