HostArgs.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using System;
  2. using System.Collections.Generic;
  3. namespace IvfTl.ControlHost
  4. {
  5. /// <summary>control 启动参数(由 operate 拉起时命令行传入)。纯 BCL,无 WPF/硬件依赖,可单测。</summary>
  6. public class HostArgs
  7. {
  8. public string Account { get; set; } = "";
  9. public string Password { get; set; } = "";
  10. public string CacheDisk { get; set; } = "";
  11. public int Port { get; set; } = 38080;
  12. /// <summary>有账号密码才允许启动采集(对齐 operate MainWindow 的空账号守卫)。</summary>
  13. public bool IsValid =>
  14. !string.IsNullOrEmpty(Account) && !string.IsNullOrEmpty(Password);
  15. public static HostArgs Parse(string[] args)
  16. {
  17. var map = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
  18. if (args != null)
  19. {
  20. foreach (var raw in args)
  21. {
  22. if (string.IsNullOrEmpty(raw)) continue;
  23. var s = raw.StartsWith("--") ? raw.Substring(2) : raw;
  24. int eq = s.IndexOf('=');
  25. if (eq <= 0) continue;
  26. map[s.Substring(0, eq)] = s.Substring(eq + 1);
  27. }
  28. }
  29. var a = new HostArgs();
  30. if (map.TryGetValue("account", out var acc)) a.Account = acc;
  31. if (map.TryGetValue("password", out var pwd)) a.Password = pwd;
  32. if (map.TryGetValue("cacheDisk", out var cd)) a.CacheDisk = cd;
  33. if (map.TryGetValue("port", out var p) && int.TryParse(p, out var pi)) a.Port = pi;
  34. return a;
  35. }
  36. }
  37. }