using System; using System.IO; using System.Threading.Tasks; namespace Aurora.Models.Media { public abstract class BaseMedia { private Stream _stream; public BaseMedia() { Id = Guid.NewGuid().ToString(); } #region Properties public string Id { get; protected set; } public abstract MediaTypeEnum MediaType { get; } public abstract BaseMetadata Metadata { get; protected set; } public bool IsLoaded { get { return DataStream != null; } } #endregion Properties public virtual Task Load() { return Task.FromResult(default(object)); } public virtual void Unload() { } /// /// Gets or sets the data stream that holds the song. /// /// The data stream. public Stream DataStream { get { return _stream; } protected set { if (value != _stream) { _stream = value; } } } } }