You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AvaloniaUI 11.0应用的其他模块中获取命令行参数?

在AvaloniaUI 11.0中获取命令行参数的方法

你的Program.cs启动代码已经通过StartWithClassicDesktopLifetime(args)把命令行参数传递给了应用生命周期对象,完全可以在应用其他部分安全获取,不需要修改Program.cs里的代码(符合注释要求),具体方法如下:

方法一:在App类中直接获取

在App.xaml.cs的OnFrameworkInitializationCompleted方法中,通过ApplicationLifetime访问参数:

public override void OnFrameworkInitializationCompleted()
{
    if (ApplicationLifetime is ClassicDesktopStyleApplicationLifetime desktopLifetime)
    {
        string[] commandLineArgs = desktopLifetime.Args;
        // 在这里使用参数,比如打印、传递给业务逻辑等
        foreach (var arg in commandLineArgs)
        {
            Console.WriteLine($"命令行参数:{arg}");
        }
    }

    base.OnFrameworkInitializationCompleted();
}

方法二:全局共享参数

如果需要在ViewModel、服务类等其他组件中访问参数,可以把参数保存到一个全局可访问的位置,比如静态类:

  1. 创建一个静态类用于存储参数:
public static class GlobalAppArgs
{
    public static string[] Args { get; set; } = Array.Empty<string>();
}
  1. 在App.xaml.cs的OnFrameworkInitializationCompleted中赋值:
public override void OnFrameworkInitializationCompleted()
{
    if (ApplicationLifetime is ClassicDesktopStyleApplicationLifetime desktopLifetime)
    {
        GlobalAppArgs.Args = desktopLifetime.Args;
    }

    base.OnFrameworkInitializationCompleted();
}
  1. 在任意其他类中直接访问:
var args = GlobalAppArgs.Args;
// 使用参数进行业务处理

注意事项

  • 不要在App的构造函数中尝试获取参数,此时ApplicationLifetime尚未完成初始化,会导致空引用。
  • 所有操作都要在OnFrameworkInitializationCompleted方法执行后进行,确保应用生命周期已就绪。

内容的提问来源于stack exchange,提问作者Stepagrus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 17:53:13