Указанное приведение недопустимо

#winforms #c#-4.0

#winforms #c #-4.0

Вопрос:

Я изо всех сил старался привести значение, но некоторые из них продолжают получать это исключение. Надеюсь, кто-нибудь укажет мне правильный путь.

Вот мой код

Этот тип из службы

  public enum ChannelCodeType {

    /// <remarks/>
    A1,

    /// <remarks/>
    A2,

    /// <remarks/>
    A3,

    /// <remarks/>
    A4,
}
 

в моей winform у меня есть окно списка, которое генерирует все эти каналы, я пытаюсь привести выбранные каналы в поле списка и передать его типу канала, но это доставляет мне трудности.

  ChannelCodeType[] ChannelCodes;
ChannelCodes=lbSearch.SelectedItems.ToString().Cast<ChannelCodeType>().ToArray();
 

затем я попробовал, как показано ниже, и потерпел неудачу

 string[] destination = new string[lbSearch.Items.Count];
        lbSearch.Items.CopyTo(destination, 0);
        ChannelCodes = destination.Cast<ChannelCodeType>().ToArray();
 

в обоих случаях он продолжает жаловаться на недопустимость приведения.

Ответ №1:

 ChannelCodes = destination.Select(e => (ChannelCodeType)Enum.Parse(typeof(ChannelCodeType),e)).ToArray();
 

Попробуйте что-то вроде описанного выше.

Проблема с вашим текущим подходом заключается в том, что вы не можете напрямую привести строку к перечислению. Вы должны проанализировать его.

Комментарии:

1. после попытки с вашим предложением он выдает новое исключение » не может неявно преобразовать тип Object[] в ChannelCodeType[] .