public static class ControllerBaseExtension
{
    public static IActionResult Success(this ControllerBase controller) =>
        new ApiResponse<int>(200);

    public static IActionResult Success(this ControllerBase controller, string msg) =>
        new ApiResponse<int>(200, msg);

    public static IActionResult Success<T>(this ControllerBase controller, T data) =>
        new ApiResponse<T>(200, "", data);

    public static IActionResult Success<T>(
        this ControllerBase controller,
        string msg,
        T? data
    ) => new ApiResponse<T>(200, msg, data);

    public static IActionResult Fail(this ControllerBase controller) =>
        new ApiResponse<int>(500);

    public static IActionResult Fail(this ControllerBase controller, string msg) =>
        new ApiResponse<int>(500, msg);
}

之前写这段代码时遇到一个问题,如果想要使用一个参数,发送string类型的data,但msg留空。在全用范型方法的情况下是做不到的。当时把这个问题暂时搁置了。但后续使用方法时,由于忘记填写范型类型导致报错,让我想出了如上的方法。如果有范型则最后一个参数为data。否则没有data数据。后续可能会用object和null代替。

第二,Lagrange.Core现在有官方的Api地址,可以不用自己设置sign服务了
https://sign.lagrangecore.org/api/sign
Thanks for 外国热心网友 for Provision of Azure Servlet
Built-in SignServer is now provided, Enjoy!

第三,VS的git真的难用。点了半天后上网搜了git命令直接解决了。建议只把VS的git作为一个可视化工具。