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 { } }
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); }
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); }
protected virtual object GetDefaultValue(string name) { return(ChoType.GetRawDefaultValue(ChoType.GetMemberInfo(GetType(), name))); }
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); }