国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Heim WeChat-Applet WeChat-Entwicklung Entwicklung der ?ffentlichen WeChat-Plattform mit asp.net (3) WeChat-Nachrichtenkapselung und Reflexionszuweisung

Entwicklung der ?ffentlichen WeChat-Plattform mit asp.net (3) WeChat-Nachrichtenkapselung und Reflexionszuweisung

Feb 23, 2017 pm 02:07 PM
Wechat ?ffentliche Plattform

Im vorherigen Artikel wurde das Gesamtframework erstellt und die Eingangsüberprüfung implementiert. Nach bestandener überprüfung wird sie an die LookMsgType-Methode übergeben. Die LookMsgType-Methode zerlegt haupts?chlich verschiedene von WeChat gesendete Nachrichten Um verschiedene Arten von Nachrichten zu beurteilen, ist es besser, Schalter zu verwenden, wenn es mehr als 5 Typen gibt Die LookMsgType-Methode wird hier ver?ffentlicht:

public?void?LookMsgType(string?msgType)
????????{

????????????#region?判斷消息類型
????????????switch?(msgType)
????????????{
????????????????case?"text":
????????????????????RText?mText?=?new?RText();
????????????????????mText?=?ReadXml.GetModel<rtext>(mText,?xmlModel);
????????????????????BLLWei.DoText(dbHome,?mText);//文本消息
????????????????????break;
????????????????case?"image":
????????????????????RImg?mImg?=?new?RImg();
????????????????????mImg?=?ReadXml.GetModel<rimg>(mImg,?xmlModel);
????????????????????BLLWei.DoImg(dbHome,mImg);//圖片
????????????????????break;
????????????????case?"voice":?//聲音
????????????????????RVoice?mVoice?=?new?RVoice();
????????????????????mVoice?=?ReadXml.GetModel<rvoice>(mVoice,?xmlModel);
????????????????????BLLWei.DoVoice(dbHome,mVoice);
????????????????????break;

????????????????case?"video"://視頻
????????????????????RVideo?mVideo?=?new?RVideo();
????????????????????mVideo?=?ReadXml.GetModel<rvideo>(mVideo,?xmlModel);
????????????????????BLLWei.DoVideo(dbHome,?mVideo);
????????????????????break;

????????????????case?"location"://地理位置
????????????????????RLocation?mLocation?=?new?RLocation();
????????????????????mLocation?=?ReadXml.GetModel<rlocation>(mLocation,?xmlModel);
????????????????????BLLWei.DoLocation(dbHome,mLocation);
????????????????????break;
????????????????case?"link"://鏈接
????????????????????RLink?mLink?=?new?RLink();
????????????????????mLink?=?ReadXml.GetModel<rlink>(mLink,?xmlModel);
????????????????????BLLWei.DoLink(dbHome,mLink);
????????????????????break;
????????????????#region?事件
????????????????case?"event":

????????????????????switch?(ReadXml.ReadModel("Event",?xmlModel))
????????????????????{
????????????????????????case?"subscribe":

????????????????????????????if?(ReadXml.ReadModel("EventKey",?xmlModel).IndexOf("qrscene_")?>=?0)
????????????????????????????{
????????????????????????????????RCodeNotSub?mNotSub?=?new?RCodeNotSub();
????????????????????????????????mNotSub?=?ReadXml.GetModel<rcodenotsub>(mNotSub,?xmlModel);
????????????????????????????????BLLWei.DoCodeNotSub(dbHome,mNotSub);//未關(guān)注的新用戶,掃描帶參數(shù)的二維碼關(guān)注
????????????????????????????}
????????????????????????????else
????????????????????????????{
????????????????????????????????RSub?mSub?=?new?RSub();
????????????????????????????????mSub?=?ReadXml.GetModel<rsub>(mSub,?xmlModel);
????????????????????????????????BLLWei.DoSub(dbHome,mSub);//普通關(guān)注
????????????????????????????}
????????????????????????????break;
????????????????????????case?"unsubscribe":
????????????????????????????RUnsub?mUnSub?=?new?RUnsub?();
????????????????????????????mUnSub?=?ReadXml.GetModel<runsub>(mUnSub,?xmlModel);
????????????????????????????BLLWei.DoUnSub(dbHome,mUnSub);//取消關(guān)注
????????????????????????????break;

????????????????????????case?"SCAN":
????????????????????????????RCodeSub?mCodeSub?=?new?RCodeSub();
????????????????????????????mCodeSub?=?ReadXml.GetModel<rcodesub>(mCodeSub,?xmlModel);
????????????????????????????BLLWei.DoCodeSub(dbHome,mCodeSub);//已經(jīng)關(guān)注的用戶掃描帶參數(shù)的二維碼
????????????????????????????break;
????????????????????????case?"LOCATION"://用戶上報地理位置

????????????????????????????RSubLocation?mSubLoc?=?new?RSubLocation();
????????????????????????????mSubLoc?=?ReadXml.GetModel<rsublocation>(mSubLoc,?xmlModel);

????????????????????????????BLLWei.DoSubLocation(dbHome,?mSubLoc);
????????????????????????????break;
????????????????????????case?"CLICK"://自定義菜單點擊

????????????????????????????RMenuClick?mMenuClk?=?new?RMenuClick();
????????????????????????????mMenuClk?=?ReadXml.GetModel<rmenuclick>(mMenuClk,?xmlModel);
????????????????????????????BLLWei.DoMenuClick(dbHome,?mMenuClk);
????????????????????????????break;
????????????????????????case?"VIEW"://自定義菜單跳轉(zhuǎn)事件

????????????????????????????RMenuView?mMenuVw?=?new?RMenuView();
????????????????????????????mMenuVw?=?ReadXml.GetModel<rmenuview>(mMenuVw,?xmlModel);
????????????????????????????BLLWei.DoMenuView(dbHome,?mMenuVw);
????????????????????????????break;
????????????????????};
????????????????????break;
????????????????#endregion
????????????}
????????????#endregion
????????}</rmenuview></rmenuclick></rsublocation></rcodesub></runsub></rsub></rcodenotsub></rlink></rlocation></rvideo></rvoice></rimg></rtext>

Der ?u?ere Schalter bestimmt den Nachrichtentyp. Wenn der Ereignistyp verwendet wird, wechseln Sie erneut, um den spezifischen Ereignistyp (Folgen, Nicht mehr folgen, benutzerdefiniertes Menü) zu bestimmen Zu diesem Zeitpunkt wurden alle von WeChat gesendeten Nachrichten verarbeitet. Im obigen Code werden dem Modell Werte zugewiesen ??werden zur Verarbeitung an die entsprechenden Methoden der Gesch?ftslogikschicht übergeben. Die Methoden zur Nachrichtenkapselung und Zuweisung zum Modell werden unten beschrieben.

1. Nachrichtenkapselung:

Kapseln Sie alle von WeChat gesendeten Nachrichten. Erstellen Sie einen Empfangsordner und einen Sendeordner im Datenmodell und erstellen Sie nach Abschluss Klassen, die den darin enthaltenen Nachrichten entsprechen. Die vollst?ndige Datenmodell-Klassenbibliothek sieht wie folgt aus:

Entwicklung der ?ffentlichen WeChat-Plattform mit asp.net (3) WeChat-Nachrichtenkapselung und Reflexionszuweisung

Beispiel

-----Nachricht empfangen:

Textnachricht RText . cs

public?class?RText
????{
????????public?string?ToUserName?{?get;?set;?}//?開發(fā)者微信號
????????public?string?FromUserName?{?get;?set;?}//?用戶號(OpenID)
????????public?long?CreateTime?{?get;?set;?}//?創(chuàng)建時間
????????public?string?MsgType?{?get;?set;?}?//消息類型
????????public?string?Content?{?get;?set;?}//內(nèi)容
????????public?long?MsgId?{?get;?set;?}//消息ID

????}

Benutzerdefiniertes Menü klicken Sie auf RMenuClick.cs

public?class?RMenuClick
????{
????????public?string?ToUserName?{?get;?set;?}//?開發(fā)者微信號
????????public?string?FromUserName?{?get;?set;?}//?用戶號(OpenID)
????????public?long?CreateTime?{?get;?set;?}//?創(chuàng)建時間
????????public?string?MsgType?{?get;?set;?}?//消息類型

????????public?string?Event?{?get;?set;?}//事件類型
????????public?string?EventKey?{?get;?set;?}//事件key
????????
????}

Andere sind ?hnlich, daher werde ich sie nicht einzeln auflisten.

-----Nachricht senden

Textnachricht SText.cs senden

public?class?SText
????{



????????public?string?ToUserName?{?get;?set;?}//?用戶號(OpenID)
????????public?string?FromUserName?{?get;?set;?}//?開發(fā)者微信號

????????public?long?CreateTime?{?get;?set;?}//?創(chuàng)建時間

????????public?string?MsgType?{?get?{?return?"text";?}?}?//消息類型

????????public?string?Content?{?get;?set;?}//內(nèi)容


????}

SText

Grafiknachricht SNews.cs senden

namespace?DataModel.Send
{
????public?class?SNews
????{
????????public?string?ToUserName?{?get;?set;?}//?用戶號(OpenID)
????????public?string?FromUserName?{?get;?set;?}//?開發(fā)者微信號

????????public?long?CreateTime?{?get;?set;?}//?創(chuàng)建時間

????????public?string?MsgType?{?get?{?return?"news";?}?}?//消息類型

????????public?int?ArticleCount?{?get;?set;?}//圖文個數(shù)

????????public?List<articlesmodel>?Articles?{?get;?set;?}//圖文列表
????}
????public?class?ArticlesModel?//默認(rèn)第一條大圖顯示
????{
????????public?string?Title?{?get;?set;?}//標(biāo)題
????????public?string?Description?{?get;?set;?}//描述
????????public?string?PicUrl?{?get;?set;?}//圖片鏈接??
????????public?string?Url?{?get;?set;?}//點擊之后跳轉(zhuǎn)的鏈接

????}
}</articlesmodel>

Da beim Senden von Grafiknachrichten mehrere spezifische Grafikinhalte (bis zu 10) in der an WeChat geantworteten Grafiknachricht vorhanden sind, gibt es ein separates ArticlesModel. Der folgende Artikel beschreibt das Versenden von grafischen Nachrichten.

2. Weisen Sie dem Modell Werte durch Reflexion zu

Am Eingang des vorherigen Artikels gibt es bereits eine Methode zum Parsen von XML, und jetzt ist die Nachricht gekapselt Der übliche Ansatz ist es, jedes Mal das entsprechende Modell zu verwenden, indem ich Code hier manuell schreibe. Ich verwende die gleiche Methode ReadXml.GetModel, wenn ich Nachrichten Werte zuweise. Die hier verwendete Methode ist wie folgt :

///?<summary>
????????///?通過反射給接收消息model賦值
????????///?</summary>
????????///?<typeparam></typeparam>
????????///?<param>
????????///?<returns></returns>
????????public?static?T?GetModel<t>(T?model,?Dictionary<string>?xmlModel)?where?T?:?class
????????{
????????????var?m?=?model.GetType();
????????????foreach?(PropertyInfo?p?in?m.GetProperties())
????????????{
????????????????string?name?=?p.Name;
????????????????if?(xmlModel.Keys.Contains(name))
????????????????{
????????????????????string?value=xmlModel.Where(x?=>?x.Key?==?name).FirstOrDefault().Value;
????????????????????p.SetValue(model,
????????????????????string.IsNullOrEmpty(value)???null?:?Convert.ChangeType(value,?p.PropertyType),?null);?
????????????????}
????????????}
????????????return?model;
????????}</string></t>

T Das Modell ist die zu verwendende Nachrichtenklasse, und das XML-Modell sind die von WeChat gesendeten analysierten XML-Informationen, die am Eingang übergeben werden. Auf diese Weise ist keine manuelle Eingabe erforderlich Schreiben Sie Code und weisen Sie jedes Mal Werte zu.

Okay, in diesem Artikel wurde die Methode ?lookmsgtype“ implementiert, die Nachrichtenkapselung und die Reflexionszuweisung implementiert, und dann folgt die Verarbeitung und spezifische Implementierung in der Gesch?ftslogikschicht ...

Mehr asp .net-Entwicklung Bitte achten Sie auf die ?ffentliche WeChat-Plattform (3). Artikel zu WeChat-Nachrichtenkapselung und Reflexionszuweisung beachten Sie bitte die chinesische PHP-Website!


Erkl?rung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

PHP-Tutorial
1502
276