通用类,其中约束基类,但仅允许派生类

时间:2013-02-27 14:41:18

标签: c# generics where-clause

我有一个班级MediaCollection<T>,代表歌曲,视频或图片的播放列表。我还有三个类:SongVideoPicture,它们都继承自AMediaElement抽象类。我的MediaCollection<T>类具有以下约束:

class MediaCollection<T>
    where T : AMediaElement, new()
{
}

这使我可以收集歌曲,图片,视频,也可以收集任何AMediaElement

如何阻止创建MediaCollection<AMediaElement>类型的对象?我可以制作MediaCollection摘要,然后创建其他三个类SongCollectionPictureCollectionVideoCollection,但我更喜欢使用where子句的解决方案。< / p>

1 个答案:

答案 0 :(得分:2)

结果证明它有效。我通过创建List<AMediaElement>对象而不是MediaCollection<AMediaElement>来测试它是错误的。因为我的where子句指定new(),所以我不能使用抽象类AMediaElement,这就是我想。

我知道我按“问问题”按钮太快了。