网站建设致谢,台州网站建设兼职,网站外链建设方法,网站打模块前两篇说到Command和Option#xff0c;这篇说说Argument。Argument的用法和Option很像#xff0c;只是他的构造和属性有些差别#xff0c;再就是在运行输入时有区别#xff0c;接下来看看实现。一个参数//创建根命令
var rootCommand new RootCommand(这是一个命令行… 前两篇说到Command和Option这篇说说Argument。Argument的用法和Option很像只是他的构造和属性有些差别再就是在运行输入时有区别接下来看看实现。一个参数//创建根命令
var rootCommand new RootCommand(这是一个命令行工具旦猫);
rootCommand.SetHandler(()
{Console.WriteLine(欢迎使用《旦猫》);
});
//创建子命令 show
var showCommand new Command(show, 显示一些信息);
//创建参数 color
var showArgument new Argumentstring(name: color, description: 设置输出信息的色彩)
{//这里设置只有一个color参数Arity ArgumentArity.ExactlyOne,
};
//添加参数到show命令中
showCommand.AddArgument(showArgument);
//设置命令show执行的动作这是带上color参数类型为string
showCommand.SetHandler((string color)
{Console.ForegroundColor (ConsoleColor)Enum.Parse(typeof(ConsoleColor), color,true);Console.WriteLine($这是《旦猫》的show命令);Console.ResetColor();
}, showArgument);
//添加命令show到 根命令中
rootCommand.Add(showCommand);
await rootCommand.InvokeAsync(args);运行结果二个参数如果当有多个参数时//创建根命令
var rootCommand new RootCommand(这是一个命令行工具旦猫);
rootCommand.SetHandler(()
{Console.WriteLine(欢迎使用《旦猫》);
});
//创建子命令 show
var showCommand new Command(show, 显示一些信息);//创建参数 color
var colorArgument new Argumentstring(name: color, description: 设置输出信息的色彩)
{//这里设置只有一个color参数Arity ArgumentArity.ExactlyOne,
};
//创建参数 times
var timesArgument new Argumentint(name: times, description: 设置输出的次数)
{//这里设置只有一个times参数Arity ArgumentArity.ExactlyOne,
};
//添加参数到show命令中
showCommand.AddArgument(colorArgument);
showCommand.AddArgument(timesArgument);
//设置命令show执行的动作这是带上color参数类型为string
showCommand.SetHandler((string color, int times)
{for (var i 1; i times; i){Console.ForegroundColor (ConsoleColor)Enum.Parse(typeof(ConsoleColor), color, true);Console.WriteLine($这是《旦猫》的show命令);}Console.ResetColor();
}, colorArgument, timesArgument);
//添加命令show到 根命令中
rootCommand.Add(showCommand);
await rootCommand.InvokeAsync(args);运行结果参数输入值类型转换在第一个例子的SetHandler中我们做了string到ConsoleColor的类型转换其实这里可以通过参数自带的构造函数参数parse来实现类型转换。代码如下//创建根命令
var rootCommand new RootCommand(这是一个命令行工具旦猫);
rootCommand.SetHandler(()
{Console.WriteLine(欢迎使用《旦猫》);
});
//创建子命令 show
var showCommand new Command(show, 显示一些信息);//创建参数 color
var showArgument new ArgumentConsoleColor(name: color, description: 设置输出信息的色彩, parse: ParseColorConsoleColor)
{Arity ArgumentArity.ExactlyOne,
};
//类型转换内置方法
ConsoleColor ParseColorConsoleColor(ArgumentResult result)
{var color result.Tokens[0].Value;return (ConsoleColor)Enum.Parse(typeof(ConsoleColor), color.ToString(), true);
}
//添加参数到show命令中
showCommand.AddArgument(showArgument);
//设置命令show执行的动作这是带上times参数类型为ConsoleColor
showCommand.SetHandler((ConsoleColor color)
{Console.ForegroundColor color;Console.WriteLine($这是《旦猫》的show命令);Console.ResetColor();
}, showArgument);
//添加命令show到 根命令中
rootCommand.Add(showCommand);
await rootCommand.InvokeAsync(args);结果如下一个参数多个值当一个参数多个值的时候实现方式如下//创建根命令
var rootCommand new RootCommand(这是一个命令行工具旦猫);
rootCommand.SetHandler(()
{Console.WriteLine(欢迎使用《旦猫》);
});
//创建子命令 show
var showCommand new Command(show, 显示一些信息);
//创建参数 color
var showArgument new ArgumentConsoleColor[](name: color, description: 设置输出信息的色彩, parse: ParseColorConsoleColor)
{Arity ArgumentArity.OneOrMore,
};
//类型转换内置方法
ConsoleColor[] ParseColorConsoleColor(ArgumentResult result)
{var colors new ListConsoleColor();foreach (var color in result.Tokens){colors.Add((ConsoleColor)Enum.Parse(typeof(ConsoleColor), color.Value.ToString(), true));}return colors.ToArray();
}//添加参数到show命令中
showCommand.AddArgument(showArgument);
//设置命令show执行的动作这是带上times参数类型为ConsoleColor数组
showCommand.SetHandler((ConsoleColor[] colors)
{foreach (var color in colors){Console.ForegroundColor color;Console.WriteLine($这是《旦猫》的show命令);Console.ResetColor();}
}, showArgument);
//添加命令show到 根命令中
rootCommand.Add(showCommand);
await rootCommand.InvokeAsync(args);结果