C# 有没有办法让每个实现接口Ae的类都有一个实现Ba作为属性的具体类的列表? 我有一个接口Ae,它有一个来自另一个接口Ba的对象列表。 我有一个实现接口Ae的类。 我有几个实现Ba接口的类。
有没有办法让每个实现接口Ae的类都有一个实现Ba作为属性的具体类的列表C# 有没有办法让每个实现接口Ae的类都有一个实现Ba作为属性的具体类的列表? 我有一个接口Ae,它有一个来自另一个接口Ba的对象列表。 我有一个实现接口Ae的类。 我有几个实现Ba接口的类。,c#,implements,concreteclass,interface-class,C#,Implements,Concreteclass,Interface Class,有没有办法让每个实现接口Ae的类都有一个实现Ba作为属性的具体类的列表 public interface IQuestion { IAnswerOption[] Answers { get; set; } } public interface IAnswerOption { int Id { get; } bool IsCorrect { get; set; } } public class AnswerOptionText : IAnswerOption {
public interface IQuestion
{
IAnswerOption[] Answers { get; set; }
}
public interface IAnswerOption
{
int Id { get; }
bool IsCorrect { get; set; }
}
public class AnswerOptionText : IAnswerOption
{
public int Id { get; }
public bool isCorrect;
public string ansText;
}
public class AnswerOptionImage : IAnswerOption
{
public int Id { get; }
public bool isCorrect;
public string imgSlug;
}
public class AudioQuestion : IQuestion
{
public AnswerOptionImage[] Answers;
public string audioName;
}
public class TextQuestion : IQuestion
{
public AnswerOptionText[] Answers { get; set; }
public string questionText { get; set; }
}
当我尝试时,AudioQuestion和TextQuestion不允许我分别使用AnswerOptionImage[]和AnswerOptionText[]
VisualStudio说我需要实现接口成员IQuestion.Answers,但这不是我的意图
如果有人能帮助我,我将非常感激。谢谢。似乎使用IQuestion界面将非常适合:
public interface IQuestion<T> where T: IAnswerOption
{
T[] Answers { get; set; }
}
public class AudioQuestion : IQuestion<AnswerOptionImage>
{
public AnswerOptionImage[] Answers{ get; set; }
public string audioName;
}
public class TextQuestion : IQuestion<AnswerOptionText>
{
public AnswerOptionText[] Answers { get; set; }
public string questionText { get; set; }
}
谢谢想象一下,将来我希望类TextQuestion同时接收AnswerOptionText[]和AnswerOptionImage[]。这样做的最佳方法是什么?你有什么建议?@DiogoFerreira因为在C ATM中没有内置的歧视联合,你可以尝试实现某种类型的一个或多个类型,使用不同数量的参数,或者使用当前的一个允许任何答案类型。我不明白你说的一个是什么意思,我可以在哪里看到更多关于它的信息?。如何使用我当前的答案类型?这是足够的公共类文本问题:IQuestion?很抱歉提出这些问题,但我是一个初学者,这对我来说太让人困惑了。