2010-10-28 13 views
25

Estoy tratando de establecer el tipo de propiedad de configuración de la aplicación en un tipo de enumeración personalizada que he definido en mi ensamblado (llame a este Proyecto A)¿Por qué no puedo seleccionar un Tipo personalizado para una configuración del mismo proyecto/ensamblaje que el archivo de configuración?

En el navegador de configuraciones, hago clic en examinar y aparece el mensaje "Seleccione un Escriba "cuadro de diálogo.

Y los Tipos definidos en el Proyecto A no parecen estar disponibles para mí. Sin embargo, hay tipos disponibles de otros proyectos a los que A ha hecho referencia.

Parece casi incomprensible para mí que uno no pueda usar Tipos definidos en el proyecto base, así que supongo que estoy haciendo algo mal. He intentado construir, limpiar, reconstruir, reiniciar sin suerte, entonces, ¿qué es exactamente lo que me estoy perdiendo?

edición: captura de pantalla aquí http://tinypic.com/r/2ls8myb/7

+0

Posible duplicado de [Utilización propia enumeración de configuración] (http://stackoverflow.com/questions/11916540/using-own-enum -in-settings) – Legolas

+4

por lo que vale, hice esta pregunta en octubre de 2010 y [usando la propia enumeración en la configuración] (http: // stackoverflow.com/questions/11916540/using-own-enum-in-settings) se le preguntó después en agosto de 2011, así que fue difícil para mí encontrar esta pregunta en ese momento. – fostandy

Respuesta

3

Debido a que su propio tipo no es serializable. Hazlo serializable y puedes definirlo en tu configuración.

+5

Hola. Marqué el tipo como serializable. Después de limpiar y reconstruir, todavía no estaba visible. ¿Puedo preguntar por qué otros tipos de otros ensamblajes que no están marcados como serializables son visibles en el Navegador de tipos? – fostandy

13

Estaba tratando de hacer exactamente lo mismo en VS 2010 (.net 3.5). Resulta que puedes hacer esto usando el diseñador de Configuraciones. La interfaz de usuario es totalmente defectuosa, como se indicó, pero si ingresa manualmente el nombre completo de la enumeración en la ventana Examinar, funcionará. Esto tiene el beneficio de no modificar el código generado (* .Designer.cs), que siempre es bueno evitar porque cuando lo haces no hay garantía de que tus cambios no se sobrescribirán.

PD - Esto solo parece funcionar si la enumeración es pública.

Configuración de interfaz gráfica de usuario:

enter image description here

A continuación, escriba manualmente el nombre del tipo totalmente cualificado:

enter image description here

En un momento juro que vi una lista desplegable de los valores de enumeración en la columna Valor, pero no la he visto desde entonces y solo tiene que escribir un valor apropiado en.

+2

En caso de que esto no funcione para nadie, intente asegurarse de que el tipo personalizado sea público. – Elliot

+0

Solo para confirmar: también vi el menú desplegable que mencionas, pero ya no se muestra ... Impresionante que las cosas triviales pueden ser muy difíciles en WPF :( – heltonbiker

+0

Creo que este método es más simple y rápido que tratar de editar la Configuración. archivo de configuración a mano. –

4

No pude navegar a mi tipo personalizado tampoco. Yo era capaz de añadir mi tipo personalizado abriendo el archivo Settings.settings en un editor de texto y añadir el valor a la sección Configuración de la siguiente manera:

<Setting Name="Options" Type="MyProject.MyOptions" Scope="User"> 
    <Value Profile="(Default)" /> 
</Setting> 

El diseñador ajustes se queja cuando lo abro, pero acabo de responder 'No' a ese diálogo, y puedo usar la configuración personalizada en mi proyecto.

+0

Esto funcionó para mí, después de que por alguna razón no puedo comprender @ la solución de Sean no funcionó. –

+0

Bueno, casi funcionó. Sin embargo, VS no serializó la configuración en el archivo app.config en todo, lo que significa que no se puede establecer en tiempo de ejecución. –

0

Estaba intentando lo mismo y la solución era muy simple: construir primero.

Agregué una clase enum, definí algunos valores y luego traté de reemplazar un valor int en el archivo Settings.settings con mi nueva enumeración, por lo que no tengo que hacer coincidir el valor más adelante. El tipo no fue encontrado. Porque aún no construí.

Después de construir una vez que el nuevo tipo de enumeración es conocida y se puede utilizar :)

Cuestiones relacionadas