У меня небольшая проблема, и я не могу найти ответ нигде. Я постараюсь держать его коротким и яснымC# Чтение одного или нескольких целых значений и назначение объекта определенным атрибутам enum на основе целых чисел.
У меня есть класс, называемый упражнениями, который содержит перечисление, ответственное за те части тела, которые совершает упражнение. Допустим, у нас есть
Chest = 1
Shoulders = 2
Arms = 4
Legs = 8
Back = 16
До сих пор у моего класса «упражнение» есть имя и это перечисление. Теоретически это должно привести к тому, что что-то вроде «Бех-пресс-сундук, руки n/Deadlift - назад, ноги» и так далее.
Далее У меня есть Каталог классов, в котором содержатся все упражнения, а в этом классе - метод AddExercise. Вот фрагмент кода:
public void AddExercise()
{
Exercise ToAdd = new Exercise();
Console.WriteLine("What is the name of the exercise?");
string name = Console.ReadLine();
ToAdd.name = name;
katalog.Add(ToAdd);
}
То, что я хочу сделать известно, включают в себя «Какие группы мышц делает удар тренировки?», А затем MULTICHOICE с указанными группами мышц. Моя идея заключается в том, что это будет выглядеть примерно так:
1. Chest
2. Shoulders
3. Arms
4. Legs
5. Back
6. That is all
Пока человек продолжал выбирать 1-5 упражнения приобретут атрибуты перечислений, а затем выйти из цикла, как только человек выбрал 6, но я не знаю, как это сделать. Из большинства увиденных Ive перечислений они в основном используются в строковом формате и синтаксическом анализе, поэтому я понятия не имею, как назначать атрибуты, читая целое число. И самая сложная часть - это назначение нескольких из них.
Вот мое перечисление, кстати:
[Flags]
public enum BodyParts : int
{
None = 0,
Chest = 1,
Shoulders = 2,
Biceps = 4,
Triceps = 8,
Back = 16,
Legs = 32
}
Спасибо за ваши ответы.
Какой интерфейс вы используете? MVC или WPF или WinForm? – Nathan
Независимо от того, что вы используете, это несколько более чем просто. Вы можете получить список перечислений с помощью Enum.GetNames (typeof (BodyParts)). ToDictionary (n => n, n => Enum.Parse (typeof (BodyParts), n)); – Nathan
И добавьте логику интерфейса, чтобы использовать значение для мультисвязывания (WPF) или computedValue (угловое/ko.js в MVC) для сопоставления значений флага. Скажем, сундук | Плечи == 3. – Nathan