J'ai une section de configuration personnalisée dans mon web.config.
Une de mes classes est saisir à partir de ceci: p> J'ai des choses qui travaillent pour analyser si je ont vrai ou faux, cependant si l'attribut est vide, je reçois des erreurs. Lorsque la section de configuration tente de cartographier la classe à la section de configuration, je reçois une erreur de "non une valeur valide pour bool" sur la partie "Nisulable". P> Comment puis-je analyser "" comme false dans mon CLASSE MYCONFIGSECTION? P> J'ai essayé ceci: p> mais quand j'essaie d'utiliser ce qui est retourné comme: P> 'Cannot implicitly convert type 'bool?' to 'bool'. An explicit conversion exists (are you missing a cast?)
4 Réponses :
if (myConfigSection.LabelsVisible.HasValue)
{
graph.Label.Visible = myConfigSection.LabelsVisible.Value;
}
Et si myconfigsection.labelsvisible.hasvalue code> est false code>?
Ensuite, graphique.Label.visible code> ne changera pas sa valeur. L'OP n'a pas spécifié le comportement souhaité au cas où Labelvisible = "" code> dans son fichier de configuration.
C'est un peu dangereux, mais techniquement fonctionne: (vous obtenez une invalidoProvirationException si la valeur de la nullable est bien nulle):
bool defaultValue = true; graph.Label.Visible = myConfigSection.LabelsVisible ?? defaultValue;
Essayez:
graph.Label.Visible = myConfigSection.LabelsVisible.HasValue ? myConfigSection.LabelsVisible.Value : false;
Autre version est: graphum.label.visible = myconfigsection.labelsvisible.value ?? faux;
@jaloplo: Non. MyConfigsection.LabelsVisible.Value Code> est de type BOOL code> mais l'opérateur ?? code> est réservé pour les opérandes de gauche de type de référence .
Votre problème est que 1: Cast graph.label.visible code> est de type bool code> mais myconfigsection.labelsvissible code> est de type bool? . Il n'y a pas de conversion implicite de bool? Code> à bool code> car cette conversion de rétrécissement. Il existe plusieurs façons de résoudre ce moyen: MyConfigsection.LabelsVisible code> à un BOOL code>: p> [ConfigurationProperty("labelsVisible", DefaultValue = true, IsRequired = false)]
public bool LabelsVisible {
get {
bool? b= (bool?)this["labelsVisible"];
return b.HasValue ? b.Value : true;
}
}
Merci pour l'explication. Ceci est extrêmement utile. Quel est spécifiquement le '?' à la fin de 'Bool?' appelé? NullableType?
La syntaxe t? Code> où t code> est un type de valeur est une courte façon de dire nullable