Ошибка при отправке выпадающего набора методу, принимающему коллекцию элементов управления - PullRequest
0 голосов
/ 26 ноября 2010

Я пытаюсь передать коллекцию элементов управления Dropdown в качестве параметра методу, который принимает коллекцию типа Control в качестве входных данных.При выполнении я получаю следующую ошибку:

"Невозможно привести объект типа 'd__a3 1[System.Web.UI.WebControls.DropDownList]' to type 'System.Collections.Generic.IEnumerable 1 [System.Web.UI.Control]'."

Любая идея, почему яполучать это?

Мой код:

private void Caller()
{
   IEnumerable<DropDownList> dropDownControlsInCurrentRow = currentRow.Controls.OfType<DropDownList>();
   SetControlsVisibility(dropDownControlsInCurrentRow, false);
}

private void SetControlsVisibility(IEnumerable<Control> controlCollection, bool visibilityFlag)
{
   foreach (ctrl in controlCollection) {
         ctrl.Visible = visibilityFlag;
   }
}

Ответы [ 2 ]

1 голос
/ 26 ноября 2010

используйте

IEnumerable<Control> dropDownControlsInCurrentRow;

вместо

IEnumerable<DropDownList> dropDownControlsInCurrentRow;
1 голос
/ 26 ноября 2010

В C # 4.0 приведенный выше код будет работать из-за противоречивости T в IEnumerable.

В C # 3.5 и ниже вам необходимо добавить дополнительный dropDownControlsInCurrentRow.Cast ()

См. Эту ссылку на контрасте для получения дополнительной информации

...