C#:CommandLineParser 如何解析URL?

标签 c# .net uri command-line-parser

我正在开发一个 C# 项目,该项目基本上使用命令来执行某些操作。它使用 CommandLineParser用于解析所有这些命令和相应参数的库。

根据新的业务需求,我需要解析包含动词和参数的 URL。

是否有任何内置/简单的方法来解析 CommandLineParser 库中的 URL, 这将避免编写我在下面解释的自定义逻辑 方法?


这是我解决这一挑战的方法:

将 URL 隐藏为命令,然后使用 CommandLine 解析器为选项属性分配值。

例如

网址:

https://localhost:9000/Open?appId=123&appName=paint&uId=511a3434-37e0-4600-ab09-65728ac4d8fe

实现:

  • 将 URL 隐藏到命令的自定义逻辑

    open -appId 123 -name paint -uid 511a3434-37e0-4600-ab09-65728ac4d8fe
    
  • 然后将其传递给parser.ParseArguments

  • 这是类结构

    [Verb("open", HelpText = "Open an application")]
    public class OpenOptions
    {
        [Option("id", "appId", Required = false, HelpText = "Application Id")]
        public int ApplicationId{ get; set; }
        [Option("name", "appName", Required = false, HelpText = "Application Name")]
        public string ApplicationName{ get; set; }
        [Option("uId", "userId", Required = true, HelpText = "User Id")]
        public Guid UserId{ get; set; }
    }
    

最佳答案

没有开箱即用的解决方案。通常 HttpUtility 类(引用 Get URL parameters from a string in .NET )可以做到这一点。

这是第一种方法:

var url = "https://localhost:9000/Open?appId=123&appName=paint&uId=511a3434-37e0-4600-ab09-65728ac4d8fe";
Uri uri = new Uri(url);
var @params = HttpUtility.ParseQueryString(uri.Query);
string? appId = @params.Get("appId");
Console.WriteLine(appId);

将返回 123,等等以及其他参数。

返回的值将是一个string类型。您最终可以使用 Guid.TryParse 解析您的 Guid 对象,并使用 int.TryParse 获取 int 值。

关于C#:CommandLineParser 如何解析URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75444331/

相关文章:

.NET Framework 4.7.2 中的 C# 8 功能

c# - SqlConnection 池似乎不起作用

c# - 使用接口(interface)属性实现的接口(interface)

java - 图片 Uri 错误

webbrowser-control - 如何将 Web 浏览器控件的 URL 属性设置为字符串

c# - 如果在运行时只知道类型参数,如何调用泛型方法?

C# 安全异常

c# - 在 init 上构建数据库时获取外键的 SqlException

c# - 为 POST API 请求发回多个响应

Android:可以在不写入 SD 的情况下将文件附加到电子邮件吗?