Доступ к свойствам дочернего класса в массиве базового классаC#

Место общения программистов C#
Anonymous
Доступ к свойствам дочернего класса в массиве базового класса

Сообщение Anonymous »

Я хочу получить доступ к свойствам дочернего класса, которые существуют только в дочернем классе в массиве типа базового класса
(пример изменен с животного на вопрос)

Код: Выделить всё

class Survey
{

Question[] questions

}

Код: Выделить всё

class Question
{

string question
bool required
}

Код: Выделить всё

class ChoiceQuestion: Question
{

AnswerOptions[] answerOptions
bool isMultiple

}

Код: Выделить всё

class FreeTextQuestion: Question
{
}

Код: Выделить всё

Survey survey = new Survey()
Question[] questions = [new FreeTextQuestion(), new ChoiceQuestion())]
survey.questions = questions
Теперь, когда я просматриваю массив животных и хочу получить доступ к конкретной информации, чтобы что-то с ней сделать. Я мог бы использовать instanceof следующим образом:

Код: Выделить всё

foreach(Question question in questions)
{

if(question is FreeTextQuestion)
{
FreeTextQuestion freeTextQuestion = question as FreeTextQuestion
}
else if (a is ChoiceQuestion)
{
ChoiceQuestion choiceQuestion = question as ChoiceQuestion
}
}
Но я читал, что подобное приведение не является полиморфизмом, поэтому мне не следует его использовать, но я не вижу другого варианта, и мне нужна информация о том, к какому типу относится вопрос, например, сохраните вопрос в правая таблица базы данных


Подробнее здесь: https://stackoverflow.com/questions/788 ... lass-array

Вернуться в «C#»