【发布时间】:2023-03-08 19:51:01
【问题描述】:
我打算为问题设计一个通用类库,用户可以在其中提出任何类型的问题(包括对该问题的答案)。
下面是我实现的设计。
如果需要,有人可以看看并建议任何更改吗?
public interface IQuestion
{
void AskQuestion();
}
public abstract class Question:IQuestion
{
public string QuestionString { get; set; }
public Question()
{
QuestionString = string.Empty;
}
public Question(string QuestionString)
{
this.QuestionString = QuestionString;
}
public abstract void AskQuestion();
}
public class ChoiceQuestion: Question
{
public List<string> ChoiceList { get; set; }
public ChoiceQuestion(string QuestionString, List<string> Choices)
:base(QuestionString)
{
ChoiceList = Choices;
}
public override void AskQuestion()
{
Console.WriteLine(QuestionString);
foreach(string opt in ChoiceList)
{
Console.Write(opt + "\t");
}
Console.WriteLine("\n=======================================================");
}
}
public class MultipleChoiceQuestion : ChoiceQuestion
{
public List<string> CorrectChoices { get; set; }
public MultipleChoiceQuestion(string QuestionString, List<string> Choices, List<string> CorrectList)
: base(QuestionString, Choices)
{
CorrectChoices = CorrectList;
}
}
public class OptionalChoiceQuestion : ChoiceQuestion
{
public string Answer;
public OptionalChoiceQuestion(string QuestionString, List<string> Choices, string CorrectChoice)
: base(QuestionString, Choices)
{
Answer = CorrectChoice;
}
}
class Program
{
static void Main(string[] args)
{
Question q = new OptionalChoiceQuestion("How many rings are on the Olympic flag?", new List<string> { "None","4","5","7"}, "5");
q.AskQuestion(); // Output to console.
q = new MultipleChoiceQuestion("Which of these are wild animals?", new List<string> { "Tiger", "Dog", "Cat", "Elephant", "Horse" }, new List<string> { "Tiger" , "Elephant" });
q.AskQuestion(); // Output to console.
}
}
请提供相同的通用设计。
【问题讨论】:
-
这个有什么问题?
-
我想知道我实现的设计是不是通用的,意味着它是否能满足世界上各种各样的问题,即问一个基本问题到多项选择水平。谢谢。
-
我觉得这个问题更适合codereview.stackexchange
-
我投票结束这个问题,因为它属于codereview.stackexchange.com
-
抱歉,我真的不知道还有专门为解决此类查询而创建的网站。
标签: c# polymorphism multiple-inheritance