1. C# / Говнокод #5156

    +116

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    public delegate IEnumerable<int> ProcessStrategy();
    
            public class ProcessEventArgs: EventArgs
            {
                public ProcessStrategy { get; set; }
            }
    
            public IEnumerable<int> GetSelectedDocuments()
            {
                var args = new ProcessEventArgs();
    
                if (args.Strategy == null)
                {
                    args.Strategy = delegate()
                                        {
                                            var result = new HashSet<int>();
                                            WalkThrough(
                                                delegate(ConceptInfo concept, CancelEventArgs cargs)
                                                {
                                                    foreach (var doc in concept.Documents)
                                                        result.Add(doc);
                                                }, State.Selected);
                                            return result;
                                        };
                }
    
                return args.Strategy();
            }

    Обьявляем делегат, потом обьявляем класс от EventArgs в котором (в EventArgs!) будет передаваться этот самый делегат.
    Потом в нужном методе создаем экземпляр класса ProcessEventArgs, проверяем делегат на null - откуда он берется не null в только что созданном непонятно, но помним про прикол с Manager singleton того же автора :), присваеваем его делегату собственно код который и совершает необходимые операции, а потом....
    Потом просто вызываем свежесозданый делегат.

    Запостил: eval_2009, 06 Января 2011

    Комментарии (9) RSS

    • > а потом.... Потом просто вызываем свежесозданый делегат.

      так это же визитер паттерн!... или я не угадал? ;)

      ну по крайней вот человек нашел еще один способ как удвоить/утроить количество классов и кода в проекте. долго думал при этом наверное. а ты жалуешься. :)
      Ответить
      • и вообще. вот тут умники всякие жалуются на кучи бесполезного кало-кода.

        а вот вы сами попробуйте тот же helloworld на килобайт 50 кода раздуть. сразу поймете как это не просто из пальца вот такие художества высасывать.

        амен.
        Ответить
      • vanished
        Ответить
    • Объектно-Ориентированный Пиздец...
      Ответить

    Добавить комментарий