Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Bedeutung
System.CommandLine
befindet sich derzeit in DER VORSCHAU, und diese Dokumentation ist für Version 2.0 Beta 5 vorgesehen.
Einige Informationen beziehen sich auf vorab veröffentlichte Produkte, die vor der Veröffentlichung erheblich geändert werden können. Microsoft gibt keine Garantie, weder ausdrücklich noch impliziert, hinsichtlich der hier bereitgestellten Informationen.
Stellt standardmäßig eine Reihe integrierter Parser bereit, System.CommandLine die viele gängige Typen analysieren können:
bool
-
byte
undsbyte
-
short
undushort
-
int
unduint
-
long
undulong
-
float
unddouble
decimal
-
DateTime
undDateTimeOffset
-
DateOnly
undTimeOnly
Guid
- FileSystemInfo, FileInfo und DirectoryInfo
- Enumerationen
- Arrays und Listen der aufgelisteten Typen
Andere Typen werden nicht unterstützt, sie können jedoch benutzerdefinierte Parser erstellen. Sie können auch die analysierten Werte überprüfen, was hilfreich ist, wenn Sie sicherstellen möchten, dass die Eingabe bestimmte Kriterien erfüllt.
Validatoren
Jede Option, jedes Argument und jeder Befehl kann mindestens ein Validator haben. Validatoren werden verwendet, um sicherzustellen, dass der analysierte Wert bestimmte Kriterien erfüllt. Sie können z. B. überprüfen, ob eine Zahl positiv ist oder dass eine Zeichenfolge nicht leer ist. Sie können auch komplexe Validatoren erstellen, die auf mehrere Bedingungen überprüfen.
Jeder Symboltyp in System.CommandLine verfügt über eine Validators
Eigenschaft, die eine Liste von Validatoren enthält. Die Validatoren werden ausgeführt, nachdem die Eingabe analysiert wurde, und sie können einen Fehler melden, wenn die Überprüfung fehlschlägt.
Um benutzerdefinierten Überprüfungscode bereitzustellen, rufen Sie System.CommandLine.Option.Validators.Add
ihre Option oder Ihr Argument (oder Befehl) auf, wie im folgenden Beispiel gezeigt:
Option<int> delayOption = new("--delay");
delayOption.Validators.Add(result =>
{
if (result.GetValue(delayOption) < 1)
{
result.AddError("Must be greater than 0");
}
});
System.CommandLine stellt einen Satz integrierter Validatoren bereit, mit denen allgemeine Typen überprüft werden können:
-
AcceptExistingOnly
– konfiguriert die angegebene Option oder das angegebene Argument so, dass nur Werte akzeptiert werden, die einer vorhandenen Datei oder einem vorhandenen Verzeichnis entsprechen. -
AcceptLegalFileNamesOnly
– konfiguriert die angegebene Option oder das argument so, dass nur Werte akzeptiert werden, die legale Dateinamen darstellen. -
AcceptOnlyFromAmong
– konfiguriert die angegebene Option oder das angegebene Argument so, dass nur Werte aus einer bestimmten Gruppe von Werten akzeptiert werden.
Benutzerdefinierte Parser
Benutzerdefinierte Parser sind erforderlich, um Typen ohne Standardparser zu analysieren, z. B. komplexe Typen. Sie können auch verwendet werden, um unterstützte Typen auf eine andere Weise zu analysieren als die integrierten Parser.
Angenommen, Sie haben einen Person
Typ:
public class Person
{
public string? FirstName { get; set; }
public string? LastName { get; set; }
}
Sie können die Werte lesen und eine Instanz der Person
Befehlsaktion erstellen:
rootCommand.SetAction(parseResult =>
{
Person person = new()
{
FirstName = parseResult.GetValue(firstNameOption),
LastName = parseResult.GetValue(lastNameOption)
};
DoRootCommand(parseResult.GetValue(fileOption), person);
});
Mit einem benutzerdefinierten Parser können Sie einen benutzerdefinierten Typ auf die gleiche Weise abrufen, wie Grundtypenwerte abgerufen werden:
Option<Person?> personOption = new("--person")
{
Description = "An option whose argument is parsed as a Person",
CustomParser = result =>
{
if (result.Tokens.Count != 2)
{
result.AddError("--person requires two arguments");
return null;
}
return new Person
{
FirstName = result.Tokens.First().Value,
LastName = result.Tokens.Last().Value
};
}
};
Wenn Sie die Eingabe analysieren und überprüfen möchten, verwenden Sie die CustomParser
Stellvertretung, wie im folgenden Beispiel gezeigt:
Option<int> delayOption = new("--delay")
{
Description = "An option whose argument is parsed as an int.",
CustomParser = result =>
{
if (!result.Tokens.Any())
{
return 42;
}
if (int.TryParse(result.Tokens.Single().Value, out var delay))
{
if (delay < 1)
{
result.AddError("Must be greater than 0");
}
return delay;
}
else
{
result.AddError("Not an int.");
return 0; // Ignored.
}
}
};
Im Folgenden finden Sie einige Beispiele dafür, was Sie mit CustomParser
einem Validator nicht tun können:
- Analysieren Sie andere Arten von Eingabezeichenfolgen (z. B. analysieren Sie "1,2,3" in
int[]
). - Dynamische Arität. Wenn Sie z. B. zwei Argumente haben, die als Zeichenfolgenarrays definiert sind und eine Abfolge von Zeichenfolgen in der Befehlszeileneingabe verarbeiten müssen, können Sie mit der
System.CommandLine.Parsing.ArgumentResult.OnlyTake
Methode die Eingabezeichenfolgen dynamisch zwischen den Argumenten aufteilen.