SenparcWeixin.MP ApiHandlerWapper.TryCommonApi 泛型方法错误: 'string' must be a non-abstract type with a public parameterless constructor
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
解决方法:
这个错误提示是因为在调用泛型方法 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 解析库。
原文地址: https://www.cveoy.top/t/topic/nJrf 著作权归作者所有。请勿转载和采集!