2010-02-02 24 views
20

Si tiene una enumeración en C#:Enum personalizado como tipo de configuración de aplicación en C#?

[Serializable] 
public enum OperatingSystem 
{ 
    Windows, 
    Macintosh 
} 

Para mi solicitud utilizo los parámetros de la aplicación, donde puede seleccionar qué tipo debe ser un ajuste. Pensé cuando selecciono Navegar, pude elegir mi enumeración o escriba la ruta completa para seleccionar esa enumeración como el tipo.

Editar:
que establece el tipo Enum a mi, sino en el valor (en Windows, Macintosh debe ser) sólo Windows es visible y soy capaz de entrar en cualquier cadena.

+4

Corrija la foto que falta. – sweetlilmre

Respuesta

31

Veo esto en VC# Express 2005. El cuadro de diálogo Examinar .. "Seleccionar un tipo" solo muestra los espacios de nombres de Sistema y Microsoft. Sin embargo, si inserta el nombre completo del tipo en el cuadro de texto Tipo seleccionado, debe aceptarlo.

+0

Lo hace de hecho. Pero los valores no se muestran, o solo muestra un cuadro de texto con "Windows" en él. Pero incluso puedo darle el valor de "esto es una cadena". – MysticEarth

+1

Es normal, en el XML, los datos se almacenan como una cadena. En teoría, puede ingresar otro valor además de uno en Enum (esta es la razón por la cual Enum.IsDefined existe). arrojará una excepción, pero puede hacerlo :). –

+1

FYI, esto también funciona para la configuración del usuario. Lo intenté, funciona muy bien! – MPelletier

0

No sé si he entendido su pregunta muy bien, pero cuando creo un custom configuration section para usar en mis archivos de configuración de aplicaciones puedo crear una propiedad de enumeración utilizando un TypeConverter attribute junto con un EnumConverter.

espero que ayude, pero quiero saber si he entendido su pregunta incorrecta.

+0

Consulte mi edición para obtener más información :) – MysticEarth

+0

No tengo experiencia con el escenario que describió, pero le daría una oportunidad a SettingsSerializeAsAttribute. Intenta aplicarlo a tu enumeración y pasa el parámetro SettingsSerializeAs.String. –

13

Claro, simplemente agregue una enumeración serializable a su proyecto, seleccione examinar y escriba el nombre calificado del espacio de nombres, p. ClassLibrary1.OperatingSystems. Bingo.

"Me ajuste el tipo Enum a mi, pero en el Valor (donde Windows, Macintosh debe ser ) sólo Windows es visible y estoy capaz de entrar en cualquier cadena".

¿Ha intentado escribir algo que no sea 'windows' o 'macintosh'? El comportamiento que ves es lo más cercano a lo que quieres ya que vas a obtener. Estoy bastante seguro de eso.

En cualquier caso ... buena suerte.

Ver que done in 30 seconds aquí.

+0

Como puede ver en mi publicación, ya tengo una enumeración serializable. Ese es el problema :) – MysticEarth

+0

¿cuál es el problema? eso es lo más cerca que vas a llegar. ;-) –

+0

Me encantó el screencast. Verlo ayudó a responder mis preguntas de seguimiento. – Mike

15

Pequeño además de todas las respuestas anteriores. En cuanto a mí, era necesario compilar la solución antes de que mi enum personalizada se haya agregado correctamente al cuadro de texto "Tipo personalizado".