example create app agregar app-config ini

app config - create - ¿Cómo establecer valores booleanos en un archivo de configuración INI?



appsettings app config (2)

He visto una variedad de formas utilizadas para establecer valores booleanos en archivos INI:

  • variable = true
  • variable = 1
  • variable = on
  • variable = yes

¿Cuál es la forma más canónica, común y / o preferida?


Depende del analizador del archivo ini. Los valores son siempre cadenas.

verdadero / falso : En C # puedo convertir cadenas verdaderas y falsas directamente a bool. Igual legibilidad y fácil conversión. menos codigo

0/1 : Tengo que convertir las cadenas 0 y 1 a int antes de convertir a bool. Tamaño de archivo ini más pequeño. Menos legible. más código.

sí / no y encendido / apagado Tendría que usar una instrucción if / switch. legible. más código.

Mi forma preferida es verdadera / falsa. El objeto se serializa en verdadero / falso, puede usar verdadero / falso con el tipo de bit sql aunque se almacene como 0/1. Así que el único inconveniente sería el tamaño que puede ser menor en la mayoría de los contextos.


No hay ninguna especificación para los archivos INI, pero valga la pena ver el comportamiento de algunas implementaciones de los idiomas que conozco.

El módulo configparser incorporado de configparser ofrece un getboolean que se comporta de la siguiente manera:

los valores aceptados ... son ''1'' , ''yes'' , ''true'' y ''on'' , lo que hace que este método devuelva True , y ''0'' , ''no'' , ''false'' y ''off'' , lo que hace que vuelva False .

En el parse_init_file de PHP, por otro lado:

Los valores de cadena "true" , "on" y "yes" se convierten a TRUE . "falso" , "apagado" , "no" y "ninguno" se consideran FALSOS .

Mientras tanto, .NET no tiene soporte incorporado para el análisis INI, pero su biblioteca de análisis INI más popular, ini-parser , no ofrece soporte alguno para el análisis automático de valores y los devuelve a todos como cadenas. Sus ejemplos de Primeros pasos muestran el análisis de Boolean.Parse booleanos con Boolean.Parse de .NET, que aceptará las cadenas "true" y "false" (con cualquier uso de mayúsculas) y emitirá una excepción si se le da algo más.

En resumen: no hay absolutamente ninguna coherencia en esta pregunta entre las diferentes implementaciones de analizadores INI.

Yo recomendaria:

  • Si solo va a analizar su INI utilizando un solo analizador, verifique cómo se comporta ese analizador y cree su INI para que se adapte a su implementación particular.
  • Si necesita admitir una amplia gama de analizadores (por ejemplo, para la interoperabilidad con el idioma), entonces abandone el INI como un formato por completo o evite por completo el uso de cualquiera de los valores mágicos booleanos que algunos analizadores entienden y en su lugar se adhieren a 1 y 0 .