2016-11-09 5 views
0

У меня есть следующие модели:Ошибка при попытке перечисления Enum

public class FormModel 
{ 
    public Guid {get; set;} 
    public Sections Sections {get; set} 
} 

[Flags] 
    public enum Sections 
    { 
     Test1= 0, 
     Test2= 1, 
     Test3= 2, 
     Test4= 4, 
     Test5= 8, 
     Test6= 16 
    } 

Im используя сервис, который возвращает модель с данными:

var form = await _formService.GetById(formAnswer.FormId); 

Теперь Сортовой-свойство содержит: Test1 | Test2

Im пытается перечислить это свойство следующим образом:

var list = new List<string>(); 
foreach(var item in Enum.GetValues(typeof(form.Sections))) 
{ 
    //Add the form.Sections into the list. 
} 

Но я получаю ошибку:

'form' is a variable but is used like a type

Как я могу перечислить Сортовой-свойство моей модели и добавить значения в список?

+0

Тип 'typeof (Sections)'. Вы передаете значение некоторых разделов в 'typeof'. –

+0

Используйте форму. Разделы. GetType() – Evk

+0

@CharlesMager: Итак, как мне сделать insead? – Bryan

ответ

1

у вас есть опечатка. Вы использовали экземпляр формы, вместо этого вы хотели тип перечисления. Попробуйте:

foreach (var item in Enum.GetValues(typeof(Sections))) 
{ 
    if (((int)form.Sections & (int)item) != 0) 
    { 
     // add to list 
    } 
} 
+0

Но если я сделаю это, я перечисляю все перечисление. Не Sections-property из моего результата из службы .. – Bryan

+0

@Bryan Ah, теперь я вижу, что вы хотели, проверьте обновление – Nico

+1

Хе-хе, я пробовал как ваш ответ раньше с этим: if ((int) form.Sections & (int) item)> 0) { }, но у меня есть ошибка. Теперь я вижу, что я забыл круглые скобки. Спасибо! – Bryan

Смежные вопросы