在基类上具有where约束的泛型类,但只允许派生类
本文关键字:许派生 派生 基类 where 泛型类 约束 | 更新日期: 2023-09-27 18:01:18
我有一个类MediaCollection<T>
,它表示歌曲、视频或图片的播放列表。我也有三个类:Song
, Video
和Picture
,它们都继承自AMediaElement
抽象类。我的MediaCollection<T>
类有以下约束:
class MediaCollection<T>
where T : AMediaElement, new()
{
}
这允许我收集歌曲,图片,视频,以及任何AMediaElement
!
如何防止创建类型为MediaCollection<AMediaElement>
的对象?我可以使MediaCollection
抽象,然后使其他三个类SongCollection
, PictureCollection
和VideoCollection
,但我更喜欢使用where
子句的解决方案。
事实证明它是有效的。我通过创建List<AMediaElement>
对象而不是MediaCollection<AMediaElement>
来测试它是错误的。因为我的where子句指定了new()
,所以我不能使用我想要的抽象类AMediaElement
。
我知道我按提问键的速度太快了