private static void FilterTypes(Assembly assembly, SystemTypeAttribute filter, ICollection <Type> excludedTypes, List <Type> output) { output.AddRange(from type in assembly.GetTypes() let isValid = (type.IsValueType && !type.IsEnum) || type.IsClass where type.IsVisible && isValid where (FilterConstraintOverride == null || FilterConstraintOverride.Invoke(type)) && (filter == null || filter.IsConstraintSatisfied(type)) where excludedTypes == null || !excludedTypes.Contains(type) select type); }
private static void FilterTypes(Assembly assembly, SystemTypeAttribute filter, ICollection <Type> excludedTypes, List <Type> output) { foreach (var type in assembly.GetLoadableTypes()) { bool isValid = type.IsValueType && !type.IsEnum || type.IsClass; if (!type.IsVisible || !isValid) { continue; } if (filter != null && !filter.IsConstraintSatisfied(type)) { continue; } if (excludedTypes != null && excludedTypes.Contains(type)) { continue; } output.Add(type); } }