Hay una manera de usar un tipo que admite nulos (es decir, int?
) para una configuración: requiere un poco de edición manual del archivo de configuración, pero luego funciona bien en el entorno VS y en el código. Y no requiere funciones adicionales o envoltorios.
Para ello, cree un entorno con el nombre deseado (por ejemplo RequiredNumberOfLimit) y hacen que sea de cualquier tipo (por ejemplo estándar int
por conveniencia). Guarde los cambios.
Ahora vaya a la carpeta del proyecto y abra el archivo "Propiedades \ Configuracións.Configuración" con editor de texto (Bloc de notas, por ejemplo) O puede abrirlo en VS haciendo clic con el botón secundario en Solution Explorer en "< Su proyecto > -> Propiedades -> Configuración. ", Seleccione" Abrir con ... "y luego elija" Editor XML "o" Editor de código fuente (texto) ". En la configuración XML abiertos encontrar su configuración (que se verá como esto):
<Setting Name="RequiredNumberOfLimit" Type="System.Int32" Scope="User">
<Value Profile="(Default)">0</Value>
</Setting>
cambiar el "Tipo" parámetro System.Int32
-System.Nullable<System.Int32>
. Y también borre el valor predeterminado (por lo que null podría usarse allí por defecto). Ahora bien, esta sección debería tener este aspecto (tenga en cuenta que <
y >
se utilizan para representar <
y >
símbolos dentro de la cadena de tipo - esto se hace para un correcto análisis de XML por VS):
<Setting Name="RequiredNumberOfLimit" Type="System.Nullable<System.Int32>" Scope="User">
<Value Profile="(Default)" />
</Setting>
Ahora guardar los cambios y volver a abrir la configuración del proyecto - voilà! - tenemos la configuración RequiredNumberOfLimit con el tipo System.Nullable<System.Int32>
que VS Settings Designer procesa correctamente, y también se puede utilizar como una variable normal int?
en el código.
Si desea que esta configuración sea capaz de devolver null
, debe mantener despejado el campo de valor predeterminado. De lo contrario, el valor predeterminado será devuelto por esta configuración si se asignó a nulo previamente (pero así es como funcionan los valores predeterminados, ¿no ?: P).
Uso var en su lugar? – Gage
@Gage: Creo que no tiene sentido. Él quiere que la configuración * definida * como 'int?'. –