using System; /// /// Brisk SDK 初始化参数。 /// public sealed class BriskOptions { /// /// 服务端基础地址。可以传主机地址,SDK 会自动补上 /api。 /// public string BaseUrl; /// /// 项目标识。 /// public string GameKey; /// /// 客户端版本号。 /// public string ClientVersion; /// /// 设备标识。 /// public string DeviceId; /// /// 是否启用调试日志。 /// public bool EnableLog; /// /// 初始化时是否主动校验本地会话有效性。 /// public bool ValidateSessionOnInitialize = true; /// /// 初始化恢复的本地会话已过期或失效时,是否使用本地保存的登录身份静默换取新会话。 /// public bool AutoReloginOnInitialize = true; /// /// 自定义登录态持久化实现。 /// public IBriskTokenStore TokenStore; /// /// 自定义严重错误展示器。 /// public IBriskErrorPresenter ErrorPresenter; /// /// 阻断错误确认后的退出处理逻辑。 /// public Action ExitHandler; /// /// 校验并规范化初始化参数。 /// public void Validate() { if (string.IsNullOrWhiteSpace(BaseUrl)) { throw new ArgumentException("BriskOptions.BaseUrl is required.", nameof(BaseUrl)); } if (string.IsNullOrWhiteSpace(GameKey)) { throw new ArgumentException("BriskOptions.GameKey is required.", nameof(GameKey)); } BaseUrl = NormalizeBaseUrl(BaseUrl); } private static string NormalizeBaseUrl(string baseUrl) { var normalized = baseUrl.Trim().TrimEnd('/'); if (normalized.EndsWith("/api", StringComparison.OrdinalIgnoreCase)) { return normalized; } return normalized + "/api"; } }