/// <summary> /// 解析菜单 /// </summary> /// <param name="jo"></param> /// <returns></returns> private static BaseMenu Parse(JObject jo) { JToken jt; if (jo.TryGetValue("type", out jt) && jo.TryGetValue("name", out jt)) { MenuTypeEnum type = (MenuTypeEnum)Enum.Parse(typeof(MenuTypeEnum), (string)jo["type"]); string name = (string)jo["name"]; if (jo.TryGetValue("key", out jt) || jo.TryGetValue("url", out jt) || jo.TryGetValue("value", out jt)) { string info = (string)jt; return(CreateItemByProgram(type, name, info)); } else { JArray ja = (JArray)jo["news_info"]["list"]; NewsForMenu[] news_info = new NewsForMenu[ja.Count]; for (int i = 0; i < ja.Count; i++) { news_info[i] = NewsForMenu.Parse((JObject)ja[i]); } return(new NewsMenu(name, news_info)); } } else { string name = (string)jo["name"]; MenuContainer mc = CreateContainer(name); JArray ja = null; if (jo.TryGetValue("sub_button", out jt)) { if (jt.Type == JTokenType.Array) { ja = (JArray)jt; } else if (jt.Type == JTokenType.Object && ((JObject)jt).TryGetValue("list", out jt)) { if (jt.Type == JTokenType.Array) { ja = (JArray)jt; } } } if (ja != null) { foreach (JObject item in ja) { mc.Add(Parse(item)); } } return(mc); } }
/// <summary> /// 构造函数 /// </summary> /// <param name="type">类型</param> /// <param name="name">名称</param> /// <param name="news_info">图文消息</param> internal NewsMenu(string name, NewsForMenu news) : this(name, new NewsForMenu[] { news }) { }