07-动态类和匿名对象在微信公众号中的应用

使用匿名对象和动态类简化接口调用

我们知道,每次发送内容都要先创建一个对应的对象,然后序列化成 JSON 文本,再调用 POST 或 GET 接口来提交。返回来的结果也要进行反序列化,反序列化又要创建对应的 JSON 对象类,这样非常不方便。

这集尝试使用匿名对象和动态类的方式来进行参数的传递。当然有些地方也建议还是创建一个对应的实体类更好,比如 Token 的类,因为它经常用到。

下面以上节课的群发消息为例子,试一下使用动态类和匿名对象的方式。

参数使用匿名对象来序列化

public T DoPost<T>(params string[] param) where T : class
{
    var user = new UserGetHandler().DoGet<UserInfo>();

    var messageTextSendParamInfo = new {
        touser = user.data.openid,
        msgtype = "text",
        text = new { content = param[0] }
    };

    var json = JsonHelper.SerializeObject(messageTextSendParamInfo);
    url = string.Format(url, accessTokenInfo.access_token);

    var content = HtmlHelper.HttpPost(url, json);
    return JsonHelper.DeserializeJsonToObject<T>(content);
}Code language: PHP (php)

返回结果用动态类来反序列化

public ActionResult MessageTextSend2(string words)
{
    var result = new TextMessageSendHandler().DoPost<dynamic>(words);
    return Json(result);
}Code language: PHP (php)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注