![](/img/trans.png)
[英]How can List<DerivedClass> be assigned to IEnumerable<BaseClass> parameter?
[英]Implement interface's IEnumerable<BaseClass> with IEnumerable<DerivedClass>?
我正在实现一个具有成员IEnumerable<BaseClass> Member
的接口。 但是我想在每个BaseClass
项目中存储一些额外的信息,为此我创建了一个派生类。 这就是我想要做的:
interface IImplementMe
{
IEnumerable<BaseClass> Member { get; }
}
class DerivedClass : BaseClass
{
// Some extra stuff here
}
class Implementation : IImplementMe
{
IEnumerable<DerivedClass> Member { get; }
}
我认为没有办法(如果有请告诉我!)。 Member
列表中可能有重复的项目,因此我无法使用字典来存储多余的内容。 实现这一目标的标准,优雅的方式是什么?
我认为您有两种选择:
使用派生类作为类型参数:
interface IImplementMe<T> where T : BaseClass { IEnumerable<T> Member; } class DerivedClass : BaseClass { // Some extra stuff here } class Implementation : IImplementMe<DerivedClass> { IEnumerable<DerivedClass> Member; }
使用IEnumerable
:
interface IImplementMe { IEnumerable Member; } class DerivedClass : BaseClass { // Some extra stuff here } class Implementation : IImplementMe { IEnumerable Member; }
您可以为此使用显式接口实现。
class Implementation : IImplementMe
{
public IEnumerable<DerivedClass> Member;
IEnumerable<BaseClass> IImplementMe.Member { get { return Member; } }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.