C# 有没有办法让每个实现接口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 {

有没有办法让每个实现接口Ae的类都有一个实现Ba作为属性的具体类的列表

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?很抱歉提出这些问题,但我是一个初学者,这对我来说太让人困惑了。