Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
2 / 2 / 2
Регистрация: 20.07.2014
Сообщений: 617
1

Использование "сложных" слов в enums

30.01.2019, 17:56. Просмотров 479. Ответов 8
Метки нет (Все метки)


Всем привет!

Когда пишу простые слова, типа кот, собака, рысь в Enum - все ок

Но когда *соб* или кот.рысь - сразу черкает

Подскажите, пожалуйста, есть ли возможности это обойти?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.01.2019, 17:56
Ответы с готовыми решениями:

Использование файлов ресурсов из "соседнего" или "выполняющего" проекта
Извиняюсь, если не правильно выразился! Суть состоит в том, что я сделал билдер, и у меня есть...

Цель - при нажатии на кнопку создать еще одну кнопку. Ошибка "Button" не содержит определения для "Location" и "Text""
int Control ; private void Button2_Click(object sender, RoutedEventArgs e) {...

Классы "Работник", "Календарь", "Оплата труда за месяц". Вывод табеля рабочего времени сотрудника
1. Реализовать класс работник, у класса свойства фамилия (строка), имя (строка), отчество (строка),...

Выдает ошибку - "Не удалось привести тип объекта "TheMaze.FormLevel1" к типу "System.Windows.Forms.Label"."
Ругается вот на эту строчку: ((Label)sender).Visible = false; Вот код: using System; using...

8
601 / 399 / 163
Регистрация: 08.10.2018
Сообщений: 1,274
Записей в блоге: 11
30.01.2019, 18:27 2
Цитата Сообщение от antoniogrid Посмотреть сообщение
кот.рысь - сразу черкает
такая запись означает: объект кот со свойством рысь и правильным идентификатором быть не может,
однако, если вы применяете компонент PropertyGrid, то в нём есть возможность показать такое название
для члена enum.
C#
1
2
3
4
5
public enum Test
{
    [Description("кот.рысь")]
    КотРысь
}
0
2 / 2 / 2
Регистрация: 20.07.2014
Сообщений: 617
05.06.2020, 13:03  [ТС] 3
На другой ситуации с тем же вопросом

У меня


StatusSource биндится к Combobox

C#
1
StatusSource = new ObservableCollection<CheckStatusEnum>(Enum.GetValues(typeof(CheckStatusEnum)).Cast<CheckStatusEnum>());
- тут не могу понять, как сделать так, чтобы выводились атрибуты, а не сами названия в Enum.

C#
1
2
3
4
5
6
7
8
9
10
11
public enum CheckStatusEnum
    {
        [Description("Pass")]
        Pass,
        [Description("No Pass")]
        NoPass,
        [Description("Clear")]
        Clear,
        [Description("No Clear")]
        NoClear
    }
C#
1
2
3
4
5
6
7
8
9
10
11
public static class MyEnumExtensions
    {
        public static string ToDescriptionString(this CheckStatusEnum val)
        {
            DescriptionAttribute[] attributes = (DescriptionAttribute[])val
                .GetType()
                .GetField(val.ToString())
                .GetCustomAttributes(typeof(DescriptionAttribute), false);
            return attributes.Length > 0 ? attributes[0].Description : string.Empty;
        }
    }
0
8122 / 4392 / 1725
Регистрация: 11.02.2013
Сообщений: 9,353
05.06.2020, 13:41 4
Как-то так:
C#
1
StatusSource = Enum.GetValues(typeof(CheckStatusEnum)).Select(v=>v.ToDescriptionString()).ToList();
0
2 / 2 / 2
Регистрация: 20.07.2014
Сообщений: 617
05.06.2020, 14:21  [ТС] 5
Не, не получится
Array does not contan definition for Select
0
8122 / 4392 / 1725
Регистрация: 11.02.2013
Сообщений: 9,353
05.06.2020, 15:05 6
antoniogrid, а, ну да. Тогда можно сделать обобщённый метод:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
internal static IEnumerable<string> GetDescriptions<T>(this T val)
    where T : Type
{
    if (!val.IsEnum)
    {
        yield break;
    }
    foreach (var item in Enum.GetValues(val))
    {
        yield return item.GetType()
            .GetField(item.ToString())
            .GetCustomAttributes(typeof(DescriptionAttribute), false)
            .Cast<DescriptionAttribute>()
            .Select(a => a.Description)
            .FirstOrDefault();
    }
}
C#
1
StatusSource = typeof(CheckStatusEnum).GetDescriptions()
0
2 / 2 / 2
Регистрация: 20.07.2014
Сообщений: 617
05.06.2020, 15:49  [ТС] 7
Inumerable не катит к Observable, просит кастить - но не закастит
0
1315 / 774 / 288
Регистрация: 17.05.2015
Сообщений: 2,977
05.06.2020, 16:10 8
antoniogrid, Inumerable есть в конструкторе Observable
0
816 / 715 / 424
Регистрация: 09.04.2014
Сообщений: 1,716
05.06.2020, 16:14 9
Цитата Сообщение от antoniogrid Посмотреть сообщение
Inumerable не катит к Observable, просит кастить - но не закастит
не понятно зачем вам Observable, но
C#
1
StatusSource =new ObservableCollection<CheckStatusEnum>(typeof(CheckStatusEnum).GetDescriptions());
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.06.2020, 16:14

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Кнопки "свернуть", "развернуть", "закрыть" на панель, которая используется вместо бордюра
используя форму без бордюров решил добавить кнопки &quot;свернуть&quot;,&quot;развернуть&quot;,&quot;закрыть&quot; на панель,...

Как исправить "преобразование типа из "string" в "System.Net.IPEndPoint" невозможно"?
Здравствуйте, не могу отправить массив байт, может кто-то знает как правильно записать ip. При...

Ошибка: "Не удалось привести типа объекта "System.Windows.Forms.TextBox" к типу "System.IConvertible".""
Программа выдает такой текст: &quot;System.InvalidCastException: &quot;Не удалось привести типа объекта...

Ошибка: Оператор "<" невозможно применить к операндам типа "string" и "int"
Дело в чём. Хочу сделать так, чтобы Количество букв из текстбокса не было меньше 6 знаков. if...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.