如何解决有没有办法使实现接口Ae的每个类都具有将Ba实现为属性的具体类之一的列表?
- 我有一个接口(Ae),其中有一个来自另一个接口(Ba)的对象列表(List)。
- 我有一个实现接口Ae的类。
- 我有几个实现Ba接口的类。
有没有办法使实现接口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 [] 。
Visual Studio说我需要实现接口成员IQuestion.Answers,但这不是我想要的。
如果有人可以帮助我,我将非常感激。谢谢。
解决方法
在IQuestion
界面上使用generics似乎是一个不错的选择:
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; }
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。