Вы можете смоделировать это с помощью NDesk.Options
, хотя вам придется самостоятельно написать некоторый проверочный код.
В NDesk.Options
вы можете зарегистрировать обработчик для параметра по умолчанию (""<> ").Этот обработчик будет работать для каждого соединения в вашем примере.Каждый раз, когда вы сталкиваетесь со значением для параметра по умолчанию, вы можете создать объект параметров подключения и заполнить последний, когда указаны стандартные параметры.
public class ConnectionListParser : OptionSet
{
public class ConnectionSettings
{
public string Name { get; set; }
public string Servername { get; set; }
public string Username { get; set; }
public string Password { get; set; }
}
public List<ConnectionSettings> Connections {get;} = new List<ConnectionSettings>();
public ConnectionListParser() {
Add("<>", x => {
Connections.Add(new ConnectionSettings() {
Name = x
});
});
Add("s:", x => Connections.Last().Servername = x);
Add("u:", x => Connections.Last().Username = x);
Add("p:", x => Connections.Last().Password = x);
}
}
Использование:
var opts = new ConnectionListParser();
var remain = opts.Parse("conn1 -sservername1 -uusername1 -ppassword1 conn2 -sservername2 -uusername2 -ppassword2".Split(' '));
// or opts.Parse(args) when you have actual command line arguments to parse
foreach(var c in opts.Connections) {
Console.WriteLine($"Connection '{c.Name}': Username={c.Username};Password={c.Password};Servername={c.Servername}");
}