/// <summary> /// Gets all property and field members of type T that match the provided settings /// </summary> /// <typeparam name="T">Type to get members of</typeparam> /// <param name="getAllMemberSettings">Settings for which members to get</param> /// <returns></returns> internal static IEnumerable <MemberInfo> GetAllMembers <T>(GetAllMemberSettings getAllMemberSettings) where T : new() { var members = typeof(T).GetMembers(getAllMemberSettings.BindingFlags) .Where(x => DEFAULT_MEMBER_TYPES.Contains(x.MemberType) && // only get properties and fields (e.g. no methods, etc.) (!x.GetCustomAttributes().Any(y => y is CompilerGeneratedAttribute)) && // don't get compiler generated members (e.g. backing fields) (x.GetMemberType().IsValueType || x.GetMemberType() == typeof(string)) && // don't get complex types (getAllMemberSettings.Predicate == null || getAllMemberSettings.Predicate(x))); return(getAllMemberSettings.Orderer != null ? members.OrderBy(x => x, getAllMemberSettings.Orderer) : members); }
/// <summary> /// Adds a column configuration for all members of TTranslationType to a translation /// </summary> /// <param name="settings">Additional settings for determining which members to include</param> /// <returns>Translation expression used to add column configurations to a translation</returns> public TranslationExpression <TTranslationDataType> AddColumnConfigurationForAllMembers(GetAllMemberSettings settings) { var members = ReflectionHelper.GetAllMembers <TTranslationDataType>(settings ?? new GetAllMemberSettings()); foreach (var mi in members) { AddExplicitColumnConfiguration(this._colConfigBuilder.BuildColumnConfiguration <TTranslationDataType>(mi, this.NextOrdinal)); } return(this); }