예제 #1
0
        /// <summary>
        /// デフォルト値を指定のプロパティに設定します。
        /// </summary>
        private void SetDefaultValue(IPropertyObject propertyObj)
        {
            var type   = propertyObj.PropertyInfo.PropertyType;
            var dvalue = Util.GetDefaultValue(type);

            propertyObj.SetValue(this, dvalue);
        }
예제 #2
0
        /// <summary>
        /// DefaultSettingValueAttributeを持つプロパティに
        /// デフォルト値を設定します。
        /// </summary>
        private void ResetProperty(IPropertyObject propertyObj, object value)
        {
            var property = propertyObj.PropertyInfo;
            var type     = property.PropertyType;

            try
            {
                if (value != null)
                {
                    // 同じ型なら値を設定。
                    if (value.GetType().Equals(type))
                    {
                        propertyObj.SetValue(this, value);
                        return;
                    }

                    // 値が存在すれば、それをデフォルト値として設定します。
                    var valueStr = value as string;
                    if (valueStr != null)
                    {
                        object tmpValue;
                        if (TryConvertToValue(type, valueStr, out tmpValue))
                        {
                            propertyObj.SetValue(this, tmpValue);
                            return;
                        }
                    }
                }

                // fallback
                SetDefaultValue(propertyObj);
            }
            catch (Exception ex)
            {
                Util.ThrowIfFatal(ex);

                Log.ErrorException(ex,
                                   "{0}.{1}: 値の設定に失敗しました。",
                                   GetType(),
                                   property.Name);

                // デフォルト値の設定を行います。
                SetDefaultValue(propertyObj);
            }
        }