CI / Go Backend (push) Canceled after 0s
初始化 monorepo: Go后端(7微服务) + Unity客户端(9模块) + 启动器 HTML5原型: Three.js 3D体素世界, Perlin噪声地形, 原版材质, 22种方块 Minecraft创造模式背包: 双栏布局, 拖拽移动物品, 方向性元件引脚 AI助搭策划文档 + 客户端/服务端骨架 + Docker Compose + CI
38 lines
1.1 KiB
C#
38 lines
1.1 KiB
C#
using System.Diagnostics.CodeAnalysis;
|
|
using System.Runtime.CompilerServices;
|
|
|
|
namespace PCL.Core.App.Cli;
|
|
|
|
public class BoolArgument : CommandArgument<bool>
|
|
{
|
|
public override ArgumentValueKind ValueKind => ArgumentValueKind.Bool;
|
|
|
|
protected override bool ParseValueText()
|
|
{
|
|
var text = ValueText.ToLowerInvariant().Trim();
|
|
return text is not ("0" or "false");
|
|
}
|
|
|
|
public override bool TryCastValue<T>([NotNullWhen(true)] out T value)
|
|
{
|
|
if (base.TryCastValue(out value)) return true;
|
|
var type = typeof(T);
|
|
if (type != typeof(sbyte) &&
|
|
type != typeof(byte) &&
|
|
type != typeof(short) &&
|
|
type != typeof(ushort) &&
|
|
type != typeof(int) &&
|
|
type != typeof(uint) &&
|
|
type != typeof(long) &&
|
|
type != typeof(ulong) &&
|
|
type != typeof(nint) &&
|
|
type != typeof(nuint)) return false;
|
|
// magic code
|
|
var v = Value;
|
|
Unsafe.As<T, byte>(ref value) = Unsafe.As<bool, byte>(ref v);
|
|
#pragma warning disable CS8762 // The analyzer sucks.
|
|
return true;
|
|
#pragma warning restore CS8762
|
|
}
|
|
}
|