«ESRI.ArcGIS.Client.GraphicCollection» не содержит определения для «AddRange».

У меня есть следующий код, который является методом addrange:

foreach (var graphic in buffersList)
{
    if (!graphicsLayerHeat.Graphics.Contains(graphic))
    {
       graphicsLayerHeat.Graphics.AddRange(buffersList);  
    }
}

Но визуальная студия подсказывает мне эту ошибку

'ESRI.ArcGIS.Client.GraphicCollection' не содержит определения для 'AddRange', и не удалось найти метод расширения 'AddRange', принимающий первый аргумент типа 'ESRI.ArcGIS.Client.GraphicCollection' (вы пропустили директиву using? или ссылка на сборку?)

Как я могу изменить метод, чтобы он работал так же, без использования addrange?


person NoobieNeedHelp    schedule 13.01.2014    source источник


Ответы (2)


Изменить это

graphicsLayerHeat.Graphics.AddRange(buffersList);  

к этому:

graphicsLayerHeat.Graphics.Add(graphic);  

Я предполагаю, что вы не хотите добавлять bufferlist снова и снова (как это сделало бы решение другого ответчика).

В более новой версии ESRI silverlight API есть метод AddRange (пора обновить?), но я не думаю, что вы хотите использовать его, так как вы также хотите выполнить проверку содержимого.

person dotMorten    schedule 13.01.2014

Просто используйте цикл foreach, чтобы добавить элементы вручную.

foreach (var buffer in buffersList) {
 graphicsLayerHeat.Graphics.Add(buffer);
}

Если это обычная операция, вы можете просто создать метод расширения AddRange самостоятельно.

static void AddRange(this GraphicsCollection source, GraphicsCollection list) {
  foreach (var item it list) { 
    source.Add(item);
  }
}

Возможно, это можно было бы сделать более общим, но я не знаком с типом GraphicsCollection, поэтому я не знаю, какие интерфейсы он реализует.

person JaredPar    schedule 13.01.2014