public static List <MemberInfo> GetFieldsAndProperties(Type type, BindingFlags bindingAttr) { List <MemberInfo> list1 = new List <MemberInfo>(); CollectionUtils.AddRange((IList)list1, (IEnumerable)ReflectionUtils.GetFields(type, bindingAttr)); CollectionUtils.AddRange((IList)list1, (IEnumerable)ReflectionUtils.GetProperties(type, bindingAttr)); List <MemberInfo> list2 = new List <MemberInfo>(list1.Count); foreach (IGrouping <string, MemberInfo> grouping in Enumerable.GroupBy <MemberInfo, string>((IEnumerable <MemberInfo>)list1, (Func <MemberInfo, string>)(m => m.Name))) { int num = Enumerable.Count <MemberInfo>((IEnumerable <MemberInfo>)grouping); IList <MemberInfo> list3 = (IList <MemberInfo>)Enumerable.ToList <MemberInfo>((IEnumerable <MemberInfo>)grouping); if (num == 1) { list2.Add(Enumerable.First <MemberInfo>((IEnumerable <MemberInfo>)list3)); } else { IEnumerable <MemberInfo> collection = Enumerable.Where <MemberInfo>((IEnumerable <MemberInfo>)list3, (Func <MemberInfo, bool>)(m => { if (ReflectionUtils.IsOverridenGenericMember(m, bindingAttr)) { return(m.Name == "Item"); } else { return(true); } })); list2.AddRange(collection); } } return(list2); }
private static void GetChildPrivateFields(IList <MemberInfo> initialFields, Type targetType, BindingFlags bindingAttr) { if ((bindingAttr & BindingFlags.NonPublic) == BindingFlags.Default) { return; } BindingFlags bindingAttr1 = ReflectionUtils.RemoveFlag(bindingAttr, BindingFlags.Public); while ((targetType = TypeExtensions.BaseType(targetType)) != null) { IEnumerable <MemberInfo> collection = Enumerable.Cast <MemberInfo>((IEnumerable)Enumerable.Where <FieldInfo>((IEnumerable <FieldInfo>)targetType.GetFields(bindingAttr1), (Func <FieldInfo, bool>)(f => f.IsPrivate))); CollectionUtils.AddRange <MemberInfo>(initialFields, collection); } }
public static void AddRange <T>(this IList <T> initial, IEnumerable collection) { ValidationUtils.ArgumentNotNull((object)initial, nameof(initial)); CollectionUtils.AddRange <T>(initial, collection.Cast <T>()); }
public static void AddRange(this IList initial, IEnumerable collection) { ValidationUtils.ArgumentNotNull((object)initial, "initial"); CollectionUtils.AddRange <object>((IList <object>) new ListWrapper <object>(initial), Enumerable.Cast <object>(collection)); }