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; if (!PDDict.ContainsKey(name)) { continue; } fc.PD = PDDict[name]; fc.PI = PIDict[name]; //Load default value defaultValue = ChoType.GetRawDefaultValue(PDDict[name]); if (defaultValue != null) { fc.DefaultValue = defaultValue; fc.IsDefaultValueSpecified = true; } //Load fallback value fallbackValue = ChoType.GetRawFallbackValue(PDDict[name]); 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); } 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); }