#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[] .