Example #1
0
        /// <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);
        }
Example #2
0
        /// <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);
        }