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

    +135

    1. 1
    2. 2
    3. 3
    var methods = from mi in typeof(T).GetMethods()
    	  where !mi.IsAbstract && mi.Name == methodName
    	  select mi;

    LINQ over Reflection

    Запостил: kostoprav, 21 Мая 2014

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

    • И вдогонку

      return methods.Single(mi =>
                  {
                      var parameters = mi.GetParameters();
                      if (parameters.Count() != args.Count())
                      {
                          return false;
                      }
                      return MatchParameters(parameters, args);
                  });
      Ответить
    • Linq, сколько же ты тонн говна было высрано с твоей помощью.
      Ответить
      • А сколько тонн было без его помощи? Сириоусли.
        Ответить
    • Шикарно! Еще AssParallel бы!
      Ответить
    • А что плохого в linq? Синтаксический сахар. По мне так вещь полезная, порой избавляет от написания большого количества кода лишнего. Может быть синтаксически это и выглядит отталкивающе, но это дело привычки. А в целом, все равно все эти конструкции транслируются в теже il вставки что и для обычных циклов foreach
      Ответить
      • В данном конкретном кейсе отвечает вот эта часть документации:
        http://msdn.microsoft.com/en-us/library/vstudio/6hy0h0z1
        Ответить
        • Вариант с мсдн вернет MethodInfo описывающий конкретный метод, а вариант который преведен в заголовке вернет коллекцию из MethodInfo для всех методов с указанным именем, может имеются перегрузки. Вопрос в том что хотел тот, кто писал этот код :)
          Ответить
          • Я там в тонне LINQ магии пропустил кусочек - потом как коммент добавил
            Ответить
      • А в общем - линк часто используют совершенно не по назначению, порой забывая что проблема решается другим способом, временами более эффективным.
        Ответить

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