示例#1
0
        private byte[] Decorate <T>(byte[] workbookBytes, ExportOption <T> exportOption)
            where T : class, new()
        {
            DecoratorContext context = new DecoratorContext()
            {
                TypeDecoratorInfo = TypeDecoratorInfoFactory.CreateInstance(typeof(T))
            };

            GetDecorators <T>().ForEach(d =>
            {
                workbookBytes = d.Decorate(workbookBytes, exportOption, context, _excelExportProvider);
            });

            return(workbookBytes);
        }
示例#2
0
        /// <summary>
        /// 获取所有的装饰器
        /// </summary>
        /// <returns></returns>
        private static List <IDecorator> GetDecorators <T>()
            where T : class, new()

        {
            List <IDecorator>            decorators        = new List <IDecorator>();
            List <BaseDecorateAttribute> attrs             = new List <BaseDecorateAttribute>();
            TypeDecoratorInfo            typeDecoratorInfo = TypeDecoratorInfoFactory.CreateInstance(typeof(T));

            attrs.AddRange(typeDecoratorInfo.TypeDecoratorAttrs);
            typeDecoratorInfo.PropertyDecoratorInfos.ForEach(a => attrs.AddRange(a.DecoratorAttrs));

            attrs.Distinct(new DecoratorAttributeComparer()).ToList().ForEach
                (a =>
            {
                var decorator = DecoratorFactory.CreateInstance(a.GetType());
                if (decorator != null)
                {
                    decorators.Add(decorator);
                }
            });

            return(decorators);
        }