using System.Collections.Generic;
public class ProductDto {
public class AlbumDto<T> where T : TrackDto
private ICollection<T> _tracks = new List<T>();
public ICollection<T> Tracks
set { _tracks = value ?? new List<T>(); }
public class AudioAlbumDto : AlbumDto<AudioTrackDto>
public class AudioVideoAlbumDto : AlbumDto<TrackDto>
public class VideoAlbumDto : AlbumDto<VideoTrackDto>
public class HRAudioAlbumDto : AlbumDto<HQTrackDto> { }
public string Title { get; set; }
public int TrackNumber { get; set; }
public class HQTrackDto : TrackDto { }
public class AudioTrackDto : TrackDto { }
public class VideoTrackDto : TrackDto { }