private void DiscoverRecordFields(Type recordType) { if (!IsDynamicObject) //recordType != typeof(ExpandoObject)) { CSVRecordFieldConfigurations.Clear(); if (ChoTypeDescriptor.GetProperties(recordType).Where(pd => pd.Attributes.OfType <ChoCSVRecordFieldAttribute>().Any()).Any()) { foreach (PropertyDescriptor pd in ChoTypeDescriptor.GetProperties(recordType).Where(pd => pd.Attributes.OfType <ChoCSVRecordFieldAttribute>().Any())) { //if (!pd.PropertyType.IsSimple()) // throw new ChoRecordConfigurationException("Property '{0}' is not a simple type.".FormatString(pd.Name)); var obj = new ChoCSVRecordFieldConfiguration(pd.Name, pd.Attributes.OfType <ChoCSVRecordFieldAttribute>().First()); obj.FieldType = pd.PropertyType; CSVRecordFieldConfigurations.Add(obj); } } else { int position = 0; foreach (PropertyDescriptor pd in ChoTypeDescriptor.GetProperties(recordType)) { //if (!pd.PropertyType.IsSimple()) // throw new ChoRecordConfigurationException("Property '{0}' is not a simple type.".FormatString(pd.Name)); var obj = new ChoCSVRecordFieldConfiguration(pd.Name, ++position); obj.FieldType = pd.PropertyType; CSVRecordFieldConfigurations.Add(obj); } } } }
private void DiscoverRecordFields(Type recordType, ref int pos, bool clear = true) { if (recordType == null) { return; } if (clear) { //SupportsMultiRecordTypes = false; CSVRecordFieldConfigurations.Clear(); } //else //SupportsMultiRecordTypes = true; DiscoverRecordFields(recordType, ref pos, null, ChoTypeDescriptor.GetProperties(recordType).Where(pd => pd.Attributes.OfType <ChoCSVRecordFieldAttribute>().Any()).Any()); }