Exemple #1
0
            /// <summary>
            /// DB項目種別変更を生成したすべてのインスタンスに反映する。
            /// 更新された項目は、
            /// <list type="bullet">
            ///     <item>値種別が変化した場合はデフォルト値で初期化される。</item>
            ///     <item>値種別が変化しなかった場合は値の変更は起こらない。ただしNotifyPropertyChangedイベントは発火する。</item>
            /// </list>
            /// </summary>
            /// <param name="itemId">項目ID</param>
            /// <param name="type">変更後の値種別</param>
            public void ReflectChangedValueType(ItemId itemId, DBItemType type)
            {
                Refresh();

                // タイプ変化チェックメソッド 後のロジックのため匿名関数にする
                Func <DBItemValueList, bool> typeCheckFunc = target => target[itemId].Type == type;
                var isSameType = false;

                foreach (var reference in MadeInstanceList)
                {
                    if (!reference.TryGetTarget(out var target))
                    {
                        continue;
                    }

                    // タイプ変化チェックは最初の1回だけ行えばいい
                    //   要素変更イベントを発火するため、タイプ変化していない場合でも要素を上書きする。
                    if (!(typeCheckFunc is null))
                    {
                        isSameType    = typeCheckFunc.Invoke(target);
                        typeCheckFunc = null;
                    }

                    target[itemId] = isSameType
                        ? target[itemId]
                        : type.DBItemDefaultValue;
                }
            }
        /// <summary>
        /// 指定した値種別が設定可能かどうかを判定する。
        /// </summary>
        /// <param name="type">[NotNull] 値種別</param>
        /// <returns>設定可能な場合true</returns>
        /// <exception cref="ArgumentNullException">typeがnullの場合</exception>
        public override bool CanSetItemType(DBItemType type)
        {
            if (type is null)
            {
                throw new ArgumentNullException(
                          ErrorMessage.NotNull(nameof(type)));
            }

            return(type == DBItemType.Int);
        }
Exemple #3
0
            /// <summary>
            /// DB項目追加を生成したすべてのインスタンスに反映する。
            /// 追加された項目はデフォルト値で初期化される。
            /// </summary>
            /// <param name="type">値種別</param>
            public void ReflectAddValueType(DBItemType type)
            {
                Refresh();

                foreach (var reference in MadeInstanceList)
                {
                    if (!reference.TryGetTarget(out var target))
                    {
                        continue;
                    }
                    target.AddForValuesListInstanceManager(type.DBItemDefaultValue);
                }
            }
Exemple #4
0
 protected DBItemValue(SerializationInfo info, StreamingContext context)
 {
     Type        = DBItemType.FromCode(info.GetInt32(nameof(Type)));
     intValue    = info.GetInt32(nameof(intValue));
     stringValue = info.GetValue <DBValueString>(nameof(stringValue));
 }