private void BuildMemberTypeIndexInformation(MemberTypeIndexPair[] memberTypeIndexPairs, IEnumerable propertyInfos, IEnumerable fieldInfos) { var enumerable = fieldInfos as object[] ?? fieldInfos.Cast <object>().ToArray(); var infos = propertyInfos as object[] ?? propertyInfos.Cast <object>().ToArray(); for (var i = 0; i < Headers.Length; i++) { memberTypeIndexPairs[i].Index = -1; var j = 0; foreach (FieldInfo fieldInfo in enumerable) { if (fieldInfo.Name == Headers[i].Name) { Headers[i].MemberTypes = MemberTypes.Field; memberTypeIndexPairs[i] = new MemberTypeIndexPair { Index = j, MemberType = MemberTypes.Field }; break; } j++; } if (memberTypeIndexPairs[i].Index != -1 && memberTypeIndexPairs[i].MemberType == MemberTypes.Field) { continue; } j = 0; foreach (PropertyInfo propertyInfo in infos) { if (propertyInfo.Name == Headers[i].Name) { Headers[i].MemberTypes = MemberTypes.Property; memberTypeIndexPairs[i] = new MemberTypeIndexPair { Index = j, MemberType = MemberTypes.Property }; break; } j++; } if (memberTypeIndexPairs[i].Index != -1 && memberTypeIndexPairs[i].MemberType == MemberTypes.Property) { continue; } memberTypeIndexPairs[i].Index = -1; } }
private void GetReflectionInformation(Type typeOfElement, out MemberTypeIndexPair[] memberTypeIndexPairs, out IEnumerable <PropertyInfo> propertyInfos, out IEnumerable <FieldInfo> fieldInfos) { memberTypeIndexPairs = new MemberTypeIndexPair[Headers.Length]; propertyInfos = typeOfElement.GetProperties(); fieldInfos = typeOfElement.GetFields(); RemoveHeaderWhitespaceAndDetermineIfRequired(); BuildMemberTypeIndexInformation(memberTypeIndexPairs, propertyInfos, fieldInfos); }