private static object GetMenuItem(CustomMenuButtonBase menuButtonBase) { var customMenuTopButton = menuButtonBase as CustomMenuTopButton; if (customMenuTopButton != null) { var menu = customMenuTopButton; return new { name = menu.Name, sub_button = menu.Childs.Select(GetMenuItem).ToArray() }; } var menuButton = (CustomMenuButton)menuButtonBase; switch (menuButton.Type) { case CustomMenuType.Click: case CustomMenuType.ScancodePush: case CustomMenuType.ScancodeWaitmsg: case CustomMenuType.PicSysphoto: case CustomMenuType.PicPhotoOrAlbum: case CustomMenuType.PicWeixin: case CustomMenuType.LocationSelect: { var menu = (CustomMenuKeyButton)menuButton; return new { type = CustomMenuTypeMappings[menu.Type], name = menu.Name, key = menu.Key }; } case CustomMenuType.View: { var menu = (CustomMenuViewButton)menuButton; return new { type = CustomMenuTypeMappings[menu.Type], name = menu.Name, url = menu.Url }; } case CustomMenuType.MediaId: case CustomMenuType.ViewLimited: { var menu = (CustomMenuMediaButton)menuButton; return new { type = CustomMenuTypeMappings[menu.Type], name = menu.Name, media_id = menu.MediaId }; } default: throw new NotSupportedException("不支持的类型:" + menuButton.Type); } }
private static object GetMenuItem(CustomMenuButtonBase menuButtonBase) { var customMenuTopButton = menuButtonBase as CustomMenuTopButton; if (customMenuTopButton != null) { var menu = customMenuTopButton; return(new { name = menu.Name, sub_button = menu.Childs.Select(GetMenuItem).ToArray() }); } var menuButton = (CustomMenuButton)menuButtonBase; switch (menuButton.Type) { case CustomMenuType.Click: case CustomMenuType.ScancodePush: case CustomMenuType.ScancodeWaitmsg: case CustomMenuType.PicSysphoto: case CustomMenuType.PicPhotoOrAlbum: case CustomMenuType.PicWeixin: case CustomMenuType.LocationSelect: { var menu = (CustomMenuKeyButton)menuButton; return(new { type = CustomMenuTypeMappings[menu.Type], name = menu.Name, key = menu.Key }); } case CustomMenuType.View: { var menu = (CustomMenuViewButton)menuButton; return(new { type = CustomMenuTypeMappings[menu.Type], name = menu.Name, url = menu.Url }); } case CustomMenuType.MediaId: case CustomMenuType.ViewLimited: { var menu = (CustomMenuMediaButton)menuButton; return(new { type = CustomMenuTypeMappings[menu.Type], name = menu.Name, media_id = menu.MediaId }); } default: throw new NotSupportedException("不支持的类型:" + menuButton.Type); } }
/// <summary> /// 设置自定义菜单。 /// </summary> /// <param name="menus">自定义菜单数组。</param> /// <exception cref="ArgumentNullException"><paramref name="menus"/> 为null。</exception> /// <exception cref="ArgumentException"><paramref name="menus"/> 长度超过3。</exception> public void Set(CustomMenuButtonBase[] menus) { if (menus.NotNull("menus").Length > 3) throw new ArgumentException("顶级菜单项不能超过3个。", "menus"); var url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" + _accountModel.GetAccessToken(); WeiXinHttpHelper.Post(url, new { button = menus.Select(GetMenuItem) }); }