Ejemplo n.º 1
0
 public void BuildUp(IAttributedBuilder builder)
 {
     ((DirectorAttribute[])
      builder.GetType().GetCustomAttributes(typeof(DirectorAttribute), false))
     .OrderByDescending(x => x.Priority)
     .ToList <DirectorAttribute>()
     .ForEach(x => InvokeBuildPartMethod(builder, x));
 }
Ejemplo n.º 2
0
        void InvokeBuildPartMethod(IAttributedBuilder builder, DirectorAttribute attribute)
        {
            switch (attribute.MethodName)
            {
            case "BuildPartA": builder.BuildPartA(); break;

            case "BuildPartB": builder.BuildPartB(); break;

            case "BuildPartC": builder.BuildPartC(); break;
            }
        }
Ejemplo n.º 3
0
        private void InvokBuildPartMethod(IAttributedBuilder builder, DirecotrAttribute attribute)
        {
            switch (attribute.Method)
            {
            case "BuildPartA": builder.BuildPartA(); break;

            case "BuildPartB": builder.BuildPartB(); break;

            case "BuildPartC": builder.BuildPartC(); break;
            }
        }
Ejemplo n.º 4
0
        public void BuildUp(IAttributedBuilder builder)
        {
            var attributes = builder.GetType().GetCustomAttributes(typeof(DirectorAttribute), false) as DirectorAttribute[];

            if (attributes == null)
            {
                return;
            }

            attributes.OrderByDescending(x => x.Priority)
            .ToList()
            .ForEach(x => InvokeBuildPartMethod(builder, x));
        }
Ejemplo n.º 5
0
        public void BuildUp(IAttributedBuilder builder)
        {
            var attributes = builder.GetType().GetCustomAttributes(typeof(DirecotrAttribute), false);

            if (attributes.Length <= 0)
            {
                return;
            }

            var directors = attributes.Select(a => a as DirecotrAttribute).OrderBy(x => x.Priority);

            foreach (var direcotrAttribute in directors)
            {
                InvokBuildPartMethod(builder, direcotrAttribute);
            }
        }
Ejemplo n.º 6
0
        public void BuildUp(IAttributedBuilder builder)
        {
            // 获取 Builder 的 DirectorAttribute 属性
            object[] attributes =
                builder.GetType().GetCustomAttributes(typeof(DirectorAttribute), false);
            if (attributes.Length <= 0)
            {
                return;
            }
            DirectorAttribute[] directors = new DirectorAttribute[attributes.Length];
            for (int i = 0; i < attributes.Length; i++)
            {
                directors[i] = (DirectorAttribute)attributes[i];
            }

            // 按每个 DirectorAttribute 优先级逆序排序后,逐个执行
            Array.Sort <DirectorAttribute>(directors);
            foreach (DirectorAttribute attribute in directors)
            {
                InvokeBuildPartMethod(builder, attribute);
            }
        }