/// <summary> /// Returns a <see cref="Boolean"/> indicating whether or not the supplied <paramref name="options"/> /// contains the <see cref="Type"/> of <paramref name="memberInfo"/> in its /// <see cref="ObjectInspectorOptions.ExcludeTypes"/> list. /// </summary> protected static bool IsExcludedType(ObjectInspectorOptions options, MemberInfo memberInfo) { Type propertyType = memberInfo.ReflectedType; string targetTypeLiteral = propertyType.ToString(); return(options.ExcludeTypes.Contains(targetTypeLiteral)); }
/// <summary> /// Check against the property name to see whether it is on any exclude lists /// </summary> protected static bool IsExcludedPropertyName(ObjectInspectorOptions options, string targetName) { string propertyName = targetName; // Trap cases where it is like target[0].Legcount (and we are including "legcount" int lastPeriodPosition = targetName.LastIndexOf("."); if (lastPeriodPosition > 0) { propertyName = targetName.Substring(lastPeriodPosition + 1); } // Handle the dataRow case - trim out the row text and get the actual column name if (propertyName.StartsWith("Rows")) { const string columnNamePattern = @"""(\w+)"""; Regex regex = new Regex(columnNamePattern); Match match = regex.Match(propertyName); if (match != null && match.Captures.Count > 0) { propertyName = match.Captures[0].Value; propertyName = propertyName.Replace("\"", string.Empty); } } // Do we have any exclusions string exclusionTest = options.ExcludeProperties.Find(exclude => string.Compare(targetName, exclude, true) == 0); if (!String.IsNullOrEmpty(exclusionTest)) { return(true); } // Do we only honour explicit includes if (!options.EnumerateAllProperties && !options.IncludeProperties.Contains(propertyName)) { return(true); } // otherwise ok return(false); }