2011-05-04 22 views
10

¿Por qué Enum.GetValues ​​() no está disponible en la API de Windows Phone 7, y esto significa que, en general, debería alejarme de los Enums en favor de las estructuras u otros mecanismos.Enum.GetValues ​​en WP7

Respuesta

5

¿Por qué es Enum.GetValues ​​(no disponible) en el teléfono de Windows 7 API

el "por qué" se debe a que WP7 se basa en el "Compact Framework" - para ahorrar en recursos, las el marco compacto no contiene todos los métodos en el marco completo, y Enum.GetValues ​​() fue uno de esos omitidos.

hace esta media general que debería rehuir de enumeraciones en favor de estructuras u otros mecanismos .

No, sin motivo en particular. Recomiendo que continúe usando enum donde encuentre la solución de programación más adecuada.

15

Me he encontrado con esto. Para mis propósitos, pude usar el reflejo

foreach (var x in typeof(MyEnum).GetFields()) { 
    if (x.IsLiteral) { 
    // Do my stuff here 
    } 
} 

Realmente depende de lo que esté haciendo con ellos.

+0

¡Solución perfecta! Una solución similar también se analiza en http://ideas.dalezak.ca/2008/11/enumgetvalues-in-compact-framework.html y en una respuesta a http://stackoverflow.com/questions/105372/c-how -to-enumerate-an-enum – Stuart

+1

Buen trabajo, crédito parcial (es decir, voto positivo), ya que tenía que dar crédito a Stuart porque su respuesta respondía a la pregunta. pero debería haber preguntado cómo puedo enumerar una enumeración, y usted habría obtenido el cheque. – CodeKiwi

+2

'MyEnum enumValue = (MyEnum) x.getValue (typeof (MyEnum));' obtendrá el valor si es necesario. –