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

    +115

    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
    try
    {
    	foreach (MapObjectBase item in objects)
    	{
    		GisTrack track = item as GisTrack;
    
    		if (track != null)
    		{
    			//ToolTipContent - наследник TextContent
    			ToolTipContent oToolTip = (ToolTipContent)track.ContentList.FirstOrDefault<IContent>(a => a is TextContent);
    			if (oToolTip != null)
    			{
    				track.ContentList.Remove(oToolTip);
    			}
    		}
    	}
    
    	this.map.Redraw(false);
    }
    catch (Exception ex)
    {
    	MonitoringManager.Instance.WriteLog(ex.ToString());
    }

    Linq - как граната. Смотря в чьих руках.

    Запостил: ICELedyanoj, 14 Февраля 2012

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

    • Мне кажется так лучше:
      foreach (GisTrack track in objects.OfType<GisTrack>())
      {
          ToolTipContent oToolTip = track.ContentList.OfType<ToolTipContent>().FirstOrDefault();
          ...
      }
      Ответить
      • И кроме того это позволит чудесным образом избежать ситуаций, когда в ContentList окажется наследник TextContent, но не ToolTipContent. И trycatch не понадобится. Кроме того легко представить, когда мы удалим несколько объектов, свалимся на приведении и не вызовем Redraw, хотя данные и поменялись.
        На самом деле все сложнее.
        Я долго думал и пытался представить себе задачу, которую должен решать этот код. Удалить первый попавшийся ToolTip? Какая-то лотерея получается. Почистить список от всех тултипов? Ближе, но способ решения весьма странный.
        Ответить
        • помойму если и имеет смысл то удалять все OfType<ToolTipContent>()
          но зачем?
          Ответить
    • показать все, что скрытоvanished
      Ответить

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