【发布时间】:2020-12-04 06:49:48
【问题描述】:
是否有任何方法可以将值 X 设置为子类属性 (TextAnswers[]) 并出现在基类属性 (Answers[]) 上? 我对另外两个类也有类似的问题,但是由于我想要的属性在基类和子类中都是相同的类型,所以很容易。我只是让属性放在基类上。
在这种情况下,属性是不同类型的(IAnswerOption 和 AnswerOptionImage)。
在我看来,完美的解决方案是在子类上设置一个属性并尝试将值传递给基类,但我对此感到很困惑。我在下面留下了代码,如果您不明白我的意图,我可以更好地解释它。
这是我的基类:
[System.Serializable]
public class Question : IQuestion<IAnswerOption>
{
public virtual IAnswerOption[] Answers { get; set; }
}
这是我的子类:
[System.Serializable]
public class AudioQuestion : Question
{
[field: SerializeField] private AnswerOptionImage[] answerOptions;
public IAnswerOption[] AnswerOptions
{
get { return (IAnswerOption[]) answerOptions;}
set { answerOptions = (AnswerOptionImage[]) Answers; }
}
public string audioName;
}
问题出现在这里。我有一堂课收到了一个问题。我创建了一个 Question 类型的属性,以便能够接收 Question 的任何子类。我进行了调试,当我到达 foreach 时出现问题。
protected Question CurrentQuestion { get; set; }
public void Method()
{
foreach (var answer in CurrentQuestion.Answers)
{
}
}
如果有人可以帮助我,我将不胜感激。谢谢。
【问题讨论】:
-
问题不清楚,你想做什么?你有一个类接收“泛型类”的参数以允许传递它的子类,然后我没有关注你
-
我将 Question 类作为基类。除此之外,我还有几个 Question 的子类,例如 AudioQuestion。两个课程都有答案。但是,问题可以有多种类型,答案也可以。正如您在上面看到的,我的问题在最后两张图片中得到了体现。作为 AudioQuestion 一部分的 AnswerOptions 已填充,但来自基类的 Answers 为空。我想要的是 CurrentQuestion.Answers 具有与 AnswerOptions 相同的值。
标签: c# oop unity3d properties