Closed hello2008zj closed 8 years ago
你可以用pull request功能,先fork一个项目,然后把你的代码pull过来。
答复:
1 - 已经添加到v13.7.8中 2 - 没看懂,格式也有点乱 3 - 这里设计的时候就是需要抛出异常,如果有新的官方的回复类型,就在这里统一添加,有新的类型出现了吗? 4 - 和3有关
非常感谢!
关于2:在UserinfoGetResult 原来有个属性custom_field_list ,这个定义有问题,不应该出现在这里。正确的位置应放到UserinfoGetResult_UserInfo 对象中,如上所术。
关于3和4,ResponseMsgType中NoResponse定义,但实际上不支持,主要解决此问题。另外:这里不一定需要抛出异常,对于不存在的响应,返回为null也是可行的。我这样改动后,后面有新的官方回复类型,只要增加回复类型和ResponseMsgType定义就可以了,避免这里还要修改代码?
谢谢!
1、已升级到v13.7.10 将在下一个稳定版本发布到Nuget。
2、NoResponse是我们自己加上去的,为了让系统识别不返回任何消息,当你return 一个NoResponse的实例时,等同于处理return null的效果,其实还没有启用,被你发现了:)这是一个给未来准备的接口,既然提到了,我已经将相关的代码更新到了Senparc.Weixin v4.5.20和Senparc.Weixin.MP.Mvc v4.1.0以及Senparc.Weixin.QY v3.3.6中,稳定后会在Nuget发布。 关于用法此处我觉得暂时还是有理由坚持约定胜于配置的原则,这里的case类型最好和“合法”的ResponseMessage类型是一致的,如果需要自己扩展,则两边都需要扩展。
如果还有疑问或者异议非常欢迎继续讨论!
1、Card_MemberCardData缺少背景url字段:public string background_pic_url { get; set; }
public CustomField custom_field3 { get; set; } ///
2、UserinfoGetResult 修改:增加对自定义字段的支持,去掉 UserinfoGetResult 对象的custom_field_list属性,移动到BaseForm的对象中心
public UserinfoGetResult_UserInfo user_info { get; set; } /////
//以下两条修改的目的是增加ResponseMsgType.NoResponse的支持,同时支持其他自定义响应类型
3、修改 public static ResponseMessageBase CreateFromRequestMessage(IRequestMessageBase requestMessage, ResponseMsgType msgType)
case ResponseMsgType.Transfer_Customer_Service: responseMessage = new ResponseMessageTransfer_Customer_Service(); break; default: return null; //现在 //throw new UnknownRequestMsgTypeException(string.Format("ResponseMsgType没有为 {0} 提供对应处理程序。", msgType), new ArgumentOutOfRangeException()); //原来 }
4、修改 public static T CreateFromRequestMessage(IRequestMessageBase requestMessage) where T : ResponseMessageBase
try { var tType = typeof(T); var responseName = tType.Name.Replace("ResponseMessage", ""); //请求名称 ResponseMsgType msgType = (ResponseMsgType)Enum.Parse(typeof(ResponseMsgType), responseName);