private static void CollectProperties(Type currentType, Action <PropertyInfo, Type> onProperty) { var types = new List <Type>(); types.Add(currentType); types.AddRange(currentType.GetInterfaces()); const BindingFlags publicBindings = BindingFlags.Public | BindingFlags.Instance; foreach (var reflectedType in types.Where(t => InfrastructureTypes.Contains(t) == false)) { foreach (var property in reflectedType.GetProperties(publicBindings)) { onProperty(property, reflectedType); } } }
private static void CollectProperties(Type currentType, Action <PropertyInfo> onProperty) { var types = new List <Type>(); types.Add(currentType); types.AddRange(currentType.GetInterfaces()); var publicBindings = BindingFlags.Public | BindingFlags.Instance; foreach (Type type in types) { if (InfrastructureTypes.Contains(type) == false) { foreach (var property in type.GetProperties(publicBindings)) { onProperty(property); } } } }