using Modules.Library.Domain.Entities.MediaContent.CommonProperties; namespace Modules.Library.Domain.Entities.MediaContent.Items.Anime; public abstract class AnimeItemSingle : AnimeItem { protected readonly AnimeSeason? _season; public TimeSpan? Duration { get; private set; } private protected AnimeItemSingle(AnimeTitle title, AnimeSeason? season) : base(title) { _season = season; } private protected AnimeItemSingle(AnimeTitle title, AnimeSeason? season, TimeSpan? duration) : base(title) { _season = season; Duration = duration; } internal AnimeItemSingle(AnimeTitle title, AnimeSeason? season, IEnumerable names) : base(title, names) { _season = season; } public void SetDuration(TimeSpan value) => Duration = value; protected override void StructureAction(Action action) { action.Invoke(); _season?.CheckIfCompleted(); _title.CheckIfCompleted(); } }