/// <summary> /// コンストラクタ> /// </summary> /// <param name="id">VOICEROID識別ID。</param> /// <param name="canSaveBlankText">空白文の音声保存を行えるならば true 。</param> public ImplBase(VoiceroidId id, bool canSaveBlankText) { if (!Enum.IsDefined(id.GetType(), id)) { throw new InvalidEnumArgumentException( nameof(id), (int)id, id.GetType()); } this.Id = id; this.CanSaveBlankText = canSaveBlankText; }
/// <summary> /// VOICEROID識別IDに対応する TItem インスタンスを取得する。 /// </summary> /// <param name="id">VOICEROID識別ID。</param> /// <returns>TItem インスタンス。</returns> protected TItem GetItem(VoiceroidId id) { TItem item; int index = this.Table.IndexOf(id); if (index < 0) { // 有効なIDか? if (!this.VoiceroidIds.Contains(id)) { throw new InvalidEnumArgumentException( nameof(id), (int)id, id.GetType()); } // アイテムを作成して追加 item = (TItem)Activator.CreateInstance(typeof(TItem), id); this.Table.Add(item); } else { // 取得 item = this.Table[index]; } return(item); }
/// <summary> /// VOICEROID識別IDに対応する TItem インスタンスを設定する。 /// </summary> /// <param name="id">VOICEROID識別ID。</param> /// <param name="item">TItem インスタンス。</param> protected void SetItem(VoiceroidId id, TItem item) { if (item == null) { throw new ArgumentNullException(nameof(item)); } if (item.VoiceroidId != id) { throw new ArgumentException( nameof(id) + @" != " + nameof(item) + @"." + nameof(VoiceroidId)); } int index = this.Table.IndexOf(id); if (index < 0) { // 有効なIDか? if (!this.VoiceroidIds.Contains(id)) { throw new InvalidEnumArgumentException( nameof(item) + @"." + nameof(VoiceroidId), (int)id, id.GetType()); } // 新規追加 this.Table.Add(item); } else { // 更新 this.Table[index] = item; } }