Ich habe eine Klasse die enthält folgende ConfigurationSection:Kann ich einen Bereich mit dem IntegerValidator-Attribut für eine benutzerdefinierte ConfigurationSection angeben?
namespace DummyConsole {
class TestingComponentSettings: ConfigurationSection {
[ConfigurationProperty("waitForTimeSeconds", IsRequired=true)]
[IntegerValidator(MinValue = 1, MaxValue = 100, ExcludeRange = false)]
public int WaitForTimeSeconds
{
get { return (int)this["waitForTimeSeconds"]; }
set { this["waitForTimeSeconds"] = value; }
}
[ConfigurationProperty("loginPage", IsRequired = true, IsKey=false)]
public string LoginPage
{
get { return (string)this["loginPage"]; }
set { this["loginPage"] = value; }
}
}
}
ich folgendes in meine .config-Datei dann haben:
<configSections>
<section name="TestingComponentSettings"
type="DummyConsole.TestingComponentSettings, DummyConsole"/>
</configSections>
<TestingComponentSettings waitForTimeSeconds="20" loginPage="myPage" />
Wenn ich versuche, dann wird folgende Fehler ich diesen Konfigurationsabschnitt zu verwenden, erhalten :
var Testing = ConfigurationManager.GetSection("TestingComponentSettings")
as TestingComponentSettings;
ConfigurationErrorsException was unhandled
The value for the property 'waitForTimeSeconds' is not valid. The error is: The value must be inside the range 1-100.
Wenn ich chan ge der IntegerValidator
ein ExcludeRage = true hat, ich (natürlich) bekommen:
ConfigurationErrorsException was unhandled
The value for the property 'waitForTimeSeconds' is not valid. The error is: The value must not be in the range 1-100
Wenn ich dann den Wert der Eigenschaft in der .config auf eine Zahl von mehr als 100, es funktioniert.
Wenn ich den Validator ändern, um nur eine MaxValue
von 100 zu haben, funktioniert es, aber wird auch einen Wert von -1 akzeptieren.
Ist es möglich, die IntegerValidatorAttribute
mit einem Bereich wie diesem zu verwenden?
bearbeiten
als issue by Microsoft Bestätigte hinzuzufügen.
Der Microsoft-Link wurde heute mit einer Lösung aktualisiert. Wenn kein Standardwert angegeben ist, wird "0" als Standardwert verwendet. 0 liegt natürlich außerhalb des Bereichs von 1-100. Die "Lösung" besteht darin, dem ConfigurationProperty-Attribut einen DefaultValue = -Parameter mit einem Standardwert hinzuzufügen, der im Bereich liegt. Leider bedeutet dies, dass Sie einen Standardwert angeben, der möglicherweise nicht Ihren Vorstellungen entspricht. Ich habe dieses Problem auch. Froh bin ich über diese Frage gestolpert! – Skrud