Exemplo n.º 1
0
        public static void SetDefaultValue(this object rec, string fn, ChoRecordFieldConfiguration fieldConfig, CultureInfo culture)
        {
            if (rec is ExpandoObject)
            {
                ((IDictionary <string, object>)rec).SetDefaultValue(fn, fieldConfig, culture);
                return;
            }

            object fieldValue = null;

            //Set default value to member
            try
            {
                bool   defaultValueExists = true;
                object defaultValue       = null;
                if (fieldConfig.IsDefaultValueSpecified)
                {
                    defaultValue = fieldConfig.DefaultValue;
                }
                else if (ChoType.HasDefaultValue(ChoTypeDescriptor.GetProperty(rec.GetType(), fn)))
                {
                    defaultValue = ChoType.GetRawDefaultValue(ChoTypeDescriptor.GetProperty(rec.GetType(), fn));
                }
                else
                {
                    defaultValueExists = false;
                }

                if (defaultValueExists)
                {
                    if (fieldConfig.Converters.IsNullOrEmpty())
                    {
                        fieldValue = ChoConvert.ConvertFrom(defaultValue, ChoType.GetMemberInfo(rec.GetType(), fn), null, culture);
                    }
                    else
                    {
                        fieldValue = ChoConvert.ConvertFrom(defaultValue, ChoType.GetMemberType(rec.GetType(), fn), null, fieldConfig.Converters.ToArray(), null, culture);
                    }

                    ChoType.SetMemberValue(rec, fn, fieldValue);
                }
            }
            catch { }
        }
Exemplo n.º 2
0
        public static object GetDefaultValue(this object rec, string fn, ChoRecordFieldConfiguration fieldConfig)
        {
            if (fieldConfig.IsDefaultValueSpecified)
            {
                return(fieldConfig.DefaultValue);
            }
            else
            {
                if (rec is ExpandoObject)
                {
                }
                else if (ChoType.HasProperty(rec.GetType(), fn))
                {
                    return(ChoType.GetRawDefaultValue(ChoTypeDescriptor.GetProperty(rec.GetType(), fn)));
                }
            }

            return(null);
        }
Exemplo n.º 3
0
        protected virtual void LoadNCacheMembers(IEnumerable <ChoRecordFieldConfiguration> fcs)
        {
            if (!IsDynamicObject)
            {
                object defaultValue  = null;
                object fallbackValue = null;
                foreach (var fc in fcs)
                {
                    if (!PDDict.ContainsKey(fc.Name))
                    {
                        continue;
                    }

                    fc.PD = PDDict[fc.Name];
                    fc.PI = PIDict[fc.Name];

                    //Load default value
                    defaultValue = ChoType.GetRawDefaultValue(PDDict[fc.Name]);
                    if (defaultValue != null)
                    {
                        fc.DefaultValue            = defaultValue;
                        fc.IsDefaultValueSpecified = true;
                    }
                    //Load fallback value
                    fallbackValue = ChoType.GetRawFallbackValue(PDDict[fc.Name]);
                    if (fallbackValue != null)
                    {
                        fc.FallbackValue            = fallbackValue;
                        fc.IsFallbackValueSpecified = true;
                    }

                    //Load Converters
                    fc.PropConverters      = ChoTypeDescriptor.GetTypeConverters(fc.PI);
                    fc.PropConverterParams = ChoTypeDescriptor.GetTypeConverterParams(fc.PI);
                }

                PropertyNames = PDDict.Keys.ToArray();
            }

            //Validators
            HasConfigValidators = (from fc in fcs
                                   where fc.Validators != null
                                   select fc).FirstOrDefault() != null;

            if (!HasConfigValidators)
            {
                if (!IsDynamicObject)
                {
                    foreach (var fc in fcs)
                    {
                        if (!PDDict.ContainsKey(fc.Name))
                        {
                            continue;
                        }
                        fc.Validators = ChoTypeDescriptor.GetPropetyAttributes <ValidationAttribute>(fc.PD).ToArray();
                    }
                }
            }

            ValDict = (from fc in fcs select new KeyValuePair <string, ValidationAttribute[]>(fc.Name, fc.Validators)).GroupBy(i => i.Key).Select(g => g.First()).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
        }
Exemplo n.º 4
0
 protected virtual object GetDefaultValue(string name)
 {
     return(ChoType.GetRawDefaultValue(ChoType.GetMemberInfo(GetType(), name)));
 }
Exemplo n.º 5
0
        protected virtual void LoadNCacheMembers(IEnumerable <ChoRecordFieldConfiguration> fcs)
        {
            if (!IsDynamicObject)
            {
                string name          = null;
                object defaultValue  = null;
                object fallbackValue = null;
                foreach (var fc in fcs)
                {
                    //if (fc is ChoFileRecordFieldConfiguration)
                    //    name = ((ChoFileRecordFieldConfiguration)fc).FieldName;
                    //else
                    name = fc.Name;

                    fc.PD = PDDict.ContainsKey(name) ? PDDict[name] :
                            (PDDict.Any(p => p.Value.Name == name) ? PDDict.Where(p => p.Value.Name == name).Select(p => p.Value).FirstOrDefault() : null);
                    fc.PI = PIDict.ContainsKey(name) ? PIDict[name] :
                            (PIDict.Any(p => p.Value.Name == name) ? PIDict.Where(p => p.Value.Name == name).Select(p => p.Value).FirstOrDefault() : null);

                    if (fc.PD == null || fc.PI == null)
                    {
                        continue;
                    }

                    //Load default value
                    defaultValue = ChoType.GetRawDefaultValue(fc.PD);
                    if (defaultValue != null)
                    {
                        fc.DefaultValue            = defaultValue;
                        fc.IsDefaultValueSpecified = true;
                    }
                    //Load fallback value
                    fallbackValue = ChoType.GetRawFallbackValue(fc.PD);
                    if (fallbackValue != null)
                    {
                        fc.FallbackValue            = fallbackValue;
                        fc.IsFallbackValueSpecified = true;
                    }

                    //Load Converters
                    fc.PropConverters      = ChoTypeDescriptor.GetTypeConverters(fc.PI);
                    fc.PropConverterParams = ChoTypeDescriptor.GetTypeConverterParams(fc.PI);

                    //Load Custom Serializer
                    fc.PropCustomSerializer       = ChoTypeDescriptor.GetCustomSerializer(fc.PI);
                    fc.PropCustomSerializerParams = ChoTypeDescriptor.GetCustomSerializerParams(fc.PI);

                    if (fc.SourceType == null)
                    {
                        fc.SourceType = fc.GetSourceTypeFromConvertersIfAny();
                    }
                }

                PropertyNames = PDDict.Keys.ToArray();
            }

            //Validators
            HasConfigValidators = (from fc in fcs
                                   where fc.Validators != null
                                   select fc).FirstOrDefault() != null;

            if (!HasConfigValidators)
            {
                if (!IsDynamicObject)
                {
                    string name = null;
                    foreach (var fc in fcs)
                    {
                        if (fc is ChoFileRecordFieldConfiguration)
                        {
                            name = ((ChoFileRecordFieldConfiguration)fc).FieldName;
                        }
                        else
                        {
                            name = fc.Name;
                        }

                        if (!PDDict.ContainsKey(name))
                        {
                            continue;
                        }
                        fc.Validators = ChoTypeDescriptor.GetPropetyAttributes <ValidationAttribute>(fc.PD).ToArray();
                    }
                }
            }

            ValDict = (from fc in fcs
                       select new KeyValuePair <string, ValidationAttribute[]>(fc is ChoFileRecordFieldConfiguration ? ((ChoFileRecordFieldConfiguration)fc).FieldName : fc.Name, fc.Validators))
                      .GroupBy(i => i.Key).Select(g => g.First()).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
        }