private void DiscoverRecordFields(Type recordType, bool clear = true) { if (clear) { XmlRecordFieldConfigurations.Clear(); } DiscoverRecordFields(recordType, null, ChoTypeDescriptor.GetProperties(recordType).Where(pd => pd.Attributes.OfType <ChoXmlNodeRecordFieldAttribute>().Any()).Any()); }
private void DiscoverRecordFields(Type recordType) { if (!IsDynamicObject) { XmlRecordFieldConfigurations.Clear(); if (ChoTypeDescriptor.GetProperties(recordType).Where(pd => pd.Attributes.OfType <ChoXmlNodeRecordFieldAttribute>().Any()).Any()) { foreach (PropertyDescriptor pd in ChoTypeDescriptor.GetProperties(recordType).Where(pd => pd.Attributes.OfType <ChoXmlNodeRecordFieldAttribute>().Any())) { //if (!pd.PropertyType.IsSimple()) // throw new ChoRecordConfigurationException("Property '{0}' is not a simple type.".FormatString(pd.Name)); var obj = new ChoXmlRecordFieldConfiguration(pd.Name, pd.Attributes.OfType <ChoXmlNodeRecordFieldAttribute>().First()); if (obj.XPath.IsNullOrWhiteSpace()) { obj.XPath = $"//{obj.FieldName}|//@{obj.FieldName}"; } obj.FieldType = pd.PropertyType; XmlRecordFieldConfigurations.Add(obj); } } else { 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 ChoXmlRecordFieldConfiguration(pd.Name, $"//{pd.Name}|//@{pd.Name}"); obj.FieldType = pd.PropertyType; XmlRecordFieldConfigurations.Add(obj); } } } }
public ChoXmlRecordConfiguration ClearFields() { //XmlRecordFieldConfigurationsForType.Clear(); XmlRecordFieldConfigurations.Clear(); return(this); }