SenparcWeixin.MP ApiHandlerWapper.TryCommonApi 泛型方法错误: 'string' must be a non-abstract type with a public parameterless constructor

错误提示:

return ApiHandlerWapper.TryCommonApi(accessToken =>
{
    var url = string.Format(Config.ApiMpHost + "/cgi-bin/menu/get?access_token={0}", accessToken.AsUrlData());

    var jsonString = RequestUtility.HttpGet(CommonDI.CommonSP, url, Encoding.UTF8);
    return jsonString;
}, Config.SenparcWeixinSetting.WeixinAppId);

报错 'string' must be a non-abstract type with a public parameterless constructor in order to use it as parameter 'T' in the generic method 'T Senparc.Weixin.MP.ApiHandlerWapper.TryCommonApi(Func<string,T>, string, bool)'

解决方法:

这个错误提示是因为在调用泛型方法 TryCommonApi 时,传入的类型 T 没有公共的无参数构造函数。可以尝试将返回类型改为具体的类型,比如将返回类型从 string 改为 JObject,如下所示:

return ApiHandlerWapper.TryCommonApi(accessToken =>
{
    var url = string.Format(Config.ApiMpHost + "/cgi-bin/menu/get?access_token={0}", accessToken.AsUrlData());

    var jsonString = RequestUtility.HttpGet(CommonDI.CommonSP, url, Encoding.UTF8);
    return JObject.Parse(jsonString); // 返回 JObject 类型
}, Config.SenparcWeixinSetting.WeixinAppId);

解释:

在 TryCommonApi 泛型方法中,参数 T 需要一个公共的无参数构造函数,以便在方法内部进行实例化。而 string 类型没有公共的无参数构造函数,因此会报错。将返回类型改为 JObject,因为 JObject 类型拥有公共的无参数构造函数,可以成功实例化。

建议:

根据具体的需求,选择合适的类型作为 TryCommonApi 方法的返回类型。如果需要对返回的 JSON 数据进行解析和处理,建议使用 JObject 或其他 JSON 解析库。

SenparcWeixin.MP ApiHandlerWapper.TryCommonApi 泛型方法错误: 'string' must be a non-abstract type with a public parameterless constructor

原文地址: https://www.cveoy.top/t/topic/nJrf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录