예제 #1
0
        public static List <ColumnDefinition> GenerateColumnDefinitions <T>(ActionEnum action)
        {
            var columns = new List <ColumnDefinition>();

            List <PropertyInfo> columnList = typeof(T).GetProperties().Where(p => p.GetCustomAttributes(true).OfType <ColumnDefinitionAttribute>().DefaultIfEmpty().FirstOrDefault() != null).OrderBy(o => o.GetCustomAttributes(true).OfType <ColumnDefinitionAttribute>().First().Order).ToList();

            foreach (PropertyInfo prop in columnList)
            {
                foreach (ColumnDefinitionAttribute att in prop.GetCustomAttributes(true).OfType <ColumnDefinitionAttribute>())
                {
                    if (att == null)
                    {
                        continue;
                    }

                    if (att.Actions == null || !att.Actions.Contains(action))
                    {
                        ColumnDefinition column = new ColumnDefinition();
                        column.Field       = prop.Name.ToCamelCase();
                        column.DisplayName = prop.Name;
                        column.CopyPropertiesValue(att);

                        columns.Add(column);
                    }
                }
            }

            return(columns);
        }