{"id":28460,"date":"2024-11-25T11:49:56","date_gmt":"2024-11-25T03:49:56","guid":{"rendered":"https:\/\/fwq.ai\/blog\/28460\/"},"modified":"2024-11-25T11:49:56","modified_gmt":"2024-11-25T03:49:56","slug":"%e5%88%86%e4%ba%ab%e4%b8%80%e7%af%87%e5%9f%ba%e4%ba%8e-net%e7%9a%84%e5%be%ae%e4%bf%a1sdk","status":"publish","type":"post","link":"https:\/\/fwq.ai\/blog\/28460\/","title":{"rendered":"\u5206\u4eab\u4e00\u7bc7\u57fa\u4e8e.NET\u7684\u5fae\u4fe1SDK"},"content":{"rendered":"<p><strong>\u4e00\u3001\u524d\u8a00<\/strong><\/p>\n<p>&nbsp; &nbsp; &nbsp; \u7279\u522b\u4e0d\u559c\u6b22\u9ebb\u70e6\u7684\u4e00\u4e2a\u4eba\uff0c\u6700\u8fd1\u78b0\u5230\u4e86\u5fae\u4fe1\u5f00\u53d1\u3002\u4e0b\u8f7d\u4e0b\u6765\u4e86\u4e00\u4e9b\u5176\u4ed6\u4eba\u5199\u7684\u5fae\u4fe1\u5f00\u53d1\u201c\u6846\u67b6\u201d\uff0c\u4f46\u662f\u88ab\u6076\u5fc3\u5230\u4e86\uff0c\u5b9e\u73b0\u7684\u592a\u81c3\u80bf\u5566\u3002<\/p>\n<p>&nbsp; &nbsp; &nbsp; \u6700\u4e0d\u559c\u6b22\u7684\u5c31\u662f<strong>\u628a\u5fae\u4fe1\u8fd4\u56de\u7684xml\u6d88\u606f\u5728\u7ec4\u88c5\u6210\u5b9e\u4f53\u7c7b\uff0c<\/strong>\u6240\u4ee5\u4f1a\u6bd4\u8f83\u81c3\u80bf\uff0c\u73b0\u5728\u90fd\u63d0\u5021\u8f7b\u91cf\u7ea7\uff0c\u6240\u4ee5\u6709\u4ec0\u4e48\u529e\u6cd5\u53ef\u4ee5\u907f\u514d\u5927\u91cf\u5b9e\u4f53\u7c7b\u7684\u5b58\u5728\u5462\u3002<\/p>\n<p>&nbsp; &nbsp; &nbsp; \u5f53\u7136\uff0c\u8fd8\u6709<strong>\u5305\u88c5\u7684\u6bd4\u8f83\u7e41\u6742\uff0c\u770b\u5b8c\u5b98\u65b9API\u540e\uff0c\u518d\u770b&#8221;\u6846\u67b6&#8221;\uff0c\u8ba9\u4eba\u611f\u89c9\u4e00\u5934\u96fe\u6c34\uff0c\u4e0d\u591f\u6e05\u6670\u3001\u660e\u4e86<\/strong>\u3002<\/p>\n<p><strong>\u4e8c\u3001\u6211\u7684\u5b9e\u73b0\u601d\u8def<\/strong><\/p>\n<p>&nbsp; &nbsp; &nbsp; \u6211\u7684\u5fae\u4fe1SDK\uff08\u4e0d\u6562\u81ea\u79f0\u6846\u67b6\uff09\uff0c\u6700\u91cd\u8981\u7684\u5b9e\u73b02\u4e2a\u76ee\u6807\uff1a<\/p>\n<p>&nbsp; &nbsp; &nbsp; 1.\u8f7b\u91cf\u7ea7\uff0c\u5c31\u662f\u8981\u6452\u5f03\u5b9e\u4f53\u7c7b\uff0c\u5c3d\u91cf\u5c11\u7684\u7533\u660eEntity\uff0c\u51cf\u5c11SDK\u7684\u4f53\u91cf\uff1b<\/p>\n<p>&nbsp; &nbsp; &nbsp; 2.\u7b80\u5355\u3001\u660e\u4e86\uff0c\u5c31\u662fSDK\u7c7b\u7684\u5212\u5206\u548c\u5b98\u65b9API\u4fdd\u6301\u4e00\u81f4\uff0c\u8ba9\u4eba\u4e00\u770b\u5c31\u61c2\u4f60\u7684\u7528\u610f\u3002<\/p>\n<p>&nbsp; &nbsp; &nbsp; \u7528\u6237\u53d1\u9001\u8bf7\u662f\u9996\u5148POST\u5230\u5fae\u4fe1\u670d\u52a1\u5668\u7684\uff0c\u7136\u540e\u5fae\u4fe1\u670d\u52a1\u5668\u5728POST\u5230\u6211\u7684\u670d\u52a1\u5668\uff0c\u8fd9\u4e2a\u63a5\u53d7\u7684\u6d88\u606f\u662fxml,\u6211\u731c\u6d4b\u4e3a\u4ec0\u4e48\u662fxml,\u800c\u4e0d\u662f\u66f4\u8f7b\u91cf\u7ea7\u7684json\uff0c\u662f\u4e3a\u4e86\u66f4\u597d\u7684\u517c\u5bb9\u6027\uff0c\u6bd5\u7adfxml\u66f4\u901a\u7528\u4e00\u4e9b\uff08\u8bf4\u9519\u4e86\uff0c\u8bf7\u6307\u51fa\u6765\uff09\u3002\u800c\u6211\u4eec\u4e3b\u52a8\u8c03\u7528\u5fae\u4fe1\u7684\u4e00\u4e9bAPI\u65f6\uff0c\u5b83\u8fd4\u56de\u7684\u662fjson\u683c\u5f0f\uff0c\u6211\u9760\uff0c\u8981\u6b7b\u554a\uff0c\u9ad8\u5927\u4e0a\u554a\u3002\u4f60\u4eec\u7684\u526f\u603b\u88c1\u5f20\u5c0f\u9f99\u4e0d\u77e5\u9053\u8fd9\u4e8b\u5417\uff1f\u597d\u5427\uff0c\u8fd9\u6837\u5176\u5b9e\u4e5f\u53ef\u4ee5\u7684\u3002<\/p>\n<p>&nbsp; &nbsp; &nbsp; &nbsp;\u5176\u5b9e\uff0c\u8c03\u7528\u5fae\u4fe1\u7684\u5de5\u4f5c\u539f\u7406\u5f88\u7b80\u5355\uff0c\u6ca1\u6709\u5fc5\u8981\u4e0a\u6765\u5c31\u6846\u67b6\u4ec0\u4e48\u7684\uff0c\u6211\u76f8\u4fe1\u662f\u4e2a\u5408\u683c\u7684\u7a0b\u5e8f\u5458\u90fd\u80fd\u505a\u51fa\u6765\u3002<\/p>\n<p>&nbsp; &nbsp; &nbsp; &nbsp;\u6211\u4eec\u7684\u670d\u52a1\u5668\u53ea\u9700\u8981\u4e00\u4e2aGET,\u548c\u4e00\u4e2aPOST\u5c31\u53ef\u4ee5\u548c\u5fae\u4fe1\u901a\u4fe1\u4e86\uff0c\u4ece\u8fd9\u4e00\u70b9\u6765\u770b\uff0c\u8bbe\u8ba1\u7684\u8fd8\u662f\u6bd4\u8f83\u4eba\u6027\u5316\u7684\uff0c\u8d5e\u4e00\u4e2a\u3002GET\u7528\u4e8e\u63a5\u901a\u5fae\u4fe1\u670d\u52a1\u7684\u6821\u9a8c\uff0c\u9a8c\u8bc1\uff1bPOST\u7528\u4e8e\u63a5\u6536\u5fae\u4fe1\u670d\u52a1\u5668\u8fc7\u6765\u7684\u6d88\u606f\uff0c\u7136\u540e\u5c06Response\u7ec4\u88c5\u597d\u8fd4\u56de\u5373\u53ef\u3002<\/p>\n<p><strong>\u4e09\u3001\u4e0a\u4ee3\u7801<\/strong><\/p>\n<p>&nbsp; &nbsp; &nbsp; &nbsp;\u597d\u4e86\uff0c\u5e9f\u8bdd\u4e0d\u591a\u8bf4\u4e86\u3002<\/p>\n<p>&nbsp; &nbsp; &nbsp; &nbsp;\u7531\u4e8e\u5fae\u4fe1\u670d\u52a1\u5668Post\u7ed9\u6211\u4eec\u7684\u662fxml\u6d88\u606f\uff0c\u8fd4\u56de\u7684\u662fjson,\u6240\u4ee5\u9700\u8981\u4e92\u8f6c\u3002\u8fd9\u6837\u5c31\u5b58\u57283\u79cd\u7c7b\u578b\u7684format,\u8fd9\u4e5f\u662f\u5927\u91cf\u7684\u6846\u67b6\u5b9a\u4e49\u5b9e\u4f53\u7c7b\u5bfc\u81f4\u6846\u67b6\u4e0d\u591f\u8f7b\u91cf\u7ea7\u7684\u7684\u539f\u56e0\u4e4b\u6240\u5728\u3002<\/p>\n<p>&nbsp; &nbsp; &nbsp; &nbsp;\u5b9e\u73b0\u7b2c\u4e00\u4e2a\u76ee\u6807\uff0c\u6211\u4e3b\u8981\u7528\u5230\u4e86.net Framework4.0\u7684Dynamic\u7279\u6027\uff0c\u548c\u4e00\u4e2a<strong>\u5c06xml\u5b57\u7b26\u4e32\u81ea\u52a8\u8f6c\u6362\u6210Dynamic Object\u7684DynamicXml.cs\u7c7b<\/strong>\uff0c\u8fd8\u6709\u4e00\u4e2a<strong>\u5c06json\u5b57\u7b26\u4e32\u81ea\u52a8\u8f6c\u6362\u6210Dynamic Object\u7684DynamicJson.cs\u7c7b<\/strong>\u3002<\/p>\n<p>&nbsp; &nbsp; &nbsp; &nbsp;\u82e6\u82e6\u5bfb\u89c5\uff0c\u7ec8\u4e8e\u8ba9\u6211\u627e\u5230\u4e86\u6211\u60f3\u8981\u7684\u3002<\/p>\n<p>&nbsp; &nbsp; &nbsp; <strong>&nbsp;1.\u4ee5\u4e0b\u662fDynamicXml.cs\u7c7b\uff0c\u6587\u4ef6\u5934\u6709\u539f\u4f5c\u8005\u7684\u7248\u6743\u4fe1\u606f\u3002<\/strong><\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/62d636c70768b83a59850564a4a4afc9-0.gif\" title=\"\u5206\u4eab\u4e00\u7bc7\u57fa\u4e8e.NET\u7684\u5fae\u4fe1SDK\u63d2\u56fe\" alt=\"\u5206\u4eab\u4e00\u7bc7\u57fa\u4e8e.NET\u7684\u5fae\u4fe1SDK\u63d2\u56fe\" \/><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/62d636c70768b83a59850564a4a4afc9-1.gif\" title=\"\u5206\u4eab\u4e00\u7bc7\u57fa\u4e8e.NET\u7684\u5fae\u4fe1SDK\u63d2\u56fe1\" alt=\"\u5206\u4eab\u4e00\u7bc7\u57fa\u4e8e.NET\u7684\u5fae\u4fe1SDK\u63d2\u56fe1\" \/><\/p>\n<pre>\/*--------------------------------------------------------------------------\r\n&nbsp;*&nbsp;https:\/\/www.captechconsulting.com\/blog\/kevin-hazzard\/fluent-xml-parsing-using-cs-dynamic-type-part-1\r\n&nbsp;*&nbsp;\u535a\u5ba2\u56ed\u7f51\u53cb&nbsp;\u591c\u306e\u9b54\u738b&nbsp;\u53cb\u60c5\u501f\u7528\u6b64\u4ee3\u7801\uff0c\u7528\u4e8e\u5fae\u4fe1\u5f00\u53d1\u3002\r\n&nbsp;*&nbsp;http:\/\/www.cnblogs.com\/deepleo\/*--------------------------------------------------------------------------*\/using&nbsp;System;using&nbsp;System.Collections.Generic;using&nbsp;System.Linq;using&nbsp;System.Dynamic;using&nbsp;System.Xml.Linq;using&nbsp;System.Collections;public&nbsp;class&nbsp;DynamicXml&nbsp;:&nbsp;DynamicObject,&nbsp;IEnumerable\r\n{&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;readonly&nbsp;List&lt;xelement&gt;&nbsp;_elements;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;DynamicXml(string&nbsp;text)\r\n&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;doc&nbsp;=&nbsp;XDocument.Parse(text);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_elements&nbsp;=&nbsp;new&nbsp;List&lt;xelement&gt;&nbsp;{&nbsp;doc.Root&nbsp;};\r\n&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;DynamicXml(XElement&nbsp;element)\r\n&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_elements&nbsp;=&nbsp;new&nbsp;List&lt;xelement&gt;&nbsp;{&nbsp;element&nbsp;};\r\n&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;DynamicXml(IEnumerable&lt;xelement&gt;&nbsp;elements)\r\n&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_elements&nbsp;=&nbsp;new&nbsp;List&lt;xelement&gt;(elements);\r\n&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;override&nbsp;bool&nbsp;TryGetMember(GetMemberBinder&nbsp;binder,&nbsp;out&nbsp;object&nbsp;result)\r\n&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(binder.Name&nbsp;==&nbsp;\"Value\")\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;_elements[0].Value;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(binder.Name&nbsp;==&nbsp;\"Count\")\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;_elements.Count;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;attr&nbsp;=&nbsp;_elements[0].Attribute(XName.Get(binder.Name));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(attr&nbsp;!=&nbsp;null)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;attr;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;items&nbsp;=&nbsp;_elements.Descendants(XName.Get(binder.Name));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(items&nbsp;==&nbsp;null&nbsp;||&nbsp;items.Count()&nbsp;==&nbsp;0)&nbsp;return&nbsp;false;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;new&nbsp;DynamicXml(items);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;\r\n&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;override&nbsp;bool&nbsp;TryGetIndex(GetIndexBinder&nbsp;binder,&nbsp;object[]&nbsp;indexes,&nbsp;out&nbsp;object&nbsp;result)\r\n&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;ndx&nbsp;=&nbsp;(int)indexes[0];\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;new&nbsp;DynamicXml(_elements[ndx]);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;\r\n&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;IEnumerator&nbsp;GetEnumerator()\r\n&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(var&nbsp;element&nbsp;in&nbsp;_elements)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yield&nbsp;return&nbsp;new&nbsp;DynamicXml(element);\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n}&lt;\/xelement&gt;&lt;\/xelement&gt;&lt;\/xelement&gt;&lt;\/xelement&gt;&lt;\/xelement&gt;<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p><span>View Code<\/span><\/p>\n<p><span style=\"line-height: 1.5\">&nbsp; &nbsp; &nbsp;\u8fd9\u4e2a\u4ee3\u7801\u6211\u4e5f\u6ca1\u4ed4\u7ec6\u770b\uff0c\u53cd\u6b63\u80fd\u7528\uff0c\u6ca1\u51fa\u8fc7\u5dee\u9519\u3002<\/span><\/p>\n<p>&nbsp; &nbsp; &nbsp; 2.<strong>\u4ee5\u4e0b\u662fDynamicJson.cs\u7c7b\uff0c\u6587\u4ef6\u5934\u6709\u539f\u4f5c\u8005\u7684\u7248\u6743\u4fe1\u606f<\/strong><\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/62d636c70768b83a59850564a4a4afc9-0.gif\" title=\"\u5206\u4eab\u4e00\u7bc7\u57fa\u4e8e.NET\u7684\u5fae\u4fe1SDK\u63d2\u56fe\" alt=\"\u5206\u4eab\u4e00\u7bc7\u57fa\u4e8e.NET\u7684\u5fae\u4fe1SDK\u63d2\u56fe\" \/><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/62d636c70768b83a59850564a4a4afc9-1.gif\" title=\"\u5206\u4eab\u4e00\u7bc7\u57fa\u4e8e.NET\u7684\u5fae\u4fe1SDK\u63d2\u56fe1\" alt=\"\u5206\u4eab\u4e00\u7bc7\u57fa\u4e8e.NET\u7684\u5fae\u4fe1SDK\u63d2\u56fe1\" \/><\/p>\n<pre>\/*--------------------------------------------------------------------------\r\n*&nbsp;DynamicJson\r\n*&nbsp;ver&nbsp;1.2.0.0&nbsp;(May.&nbsp;21th,&nbsp;2010)\r\n*\r\n*&nbsp;created&nbsp;and&nbsp;maintained&nbsp;by&nbsp;neuecc&nbsp;&lt;ils&gt;\r\n*&nbsp;licensed&nbsp;under&nbsp;Microsoft&nbsp;Public&nbsp;License(Ms-PL)\r\n*&nbsp;http:\/\/neue.cc\/*&nbsp;http:\/\/dynamicjson.codeplex.com\/\r\n&nbsp;*&nbsp;\u535a\u5ba2\u56ed\u7f51\u53cb&nbsp;\u591c\u306e\u9b54\u738b&nbsp;\u53cb\u60c5\u501f\u7528\u6b64\u4ee3\u7801\uff0c\u7528\u4e8e\u5fae\u4fe1\u5f00\u53d1\u3002\r\n&nbsp;*&nbsp;http:\/\/www.cnblogs.com\/deepleo\/*--------------------------------------------------------------------------*\/using&nbsp;System;using&nbsp;System.Collections;using&nbsp;System.Collections.Generic;using&nbsp;System.Diagnostics;using&nbsp;System.Dynamic;using&nbsp;System.IO;using&nbsp;System.Linq;using&nbsp;System.Reflection;using&nbsp;System.Runtime.Serialization.Json;using&nbsp;System.Text;using&nbsp;System.Xml;using&nbsp;System.Xml.Linq;namespace&nbsp;Codeplex.Data\r\n{&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;class&nbsp;DynamicJson&nbsp;:&nbsp;DynamicObject\r\n&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;enum&nbsp;JsonType\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@string,&nbsp;number,&nbsp;boolean,&nbsp;@object,&nbsp;array,&nbsp;@null\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;public&nbsp;static&nbsp;methods\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;from&nbsp;JsonSring&nbsp;to&nbsp;DynamicJson&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;dynamic&nbsp;Parse(string&nbsp;json)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Parse(json,&nbsp;Encoding.Unicode);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;from&nbsp;JsonSring&nbsp;to&nbsp;DynamicJson&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;dynamic&nbsp;Parse(string&nbsp;json,&nbsp;Encoding&nbsp;encoding)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;using&nbsp;(var&nbsp;reader&nbsp;=&nbsp;JsonReaderWriterFactory.CreateJsonReader(encoding.GetBytes(json),&nbsp;XmlDictionaryReaderQuotas.Max))\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ToValue(XElement.Load(reader));\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;from&nbsp;JsonSringStream&nbsp;to&nbsp;DynamicJson&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;dynamic&nbsp;Parse(Stream&nbsp;stream)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;using&nbsp;(var&nbsp;reader&nbsp;=&nbsp;JsonReaderWriterFactory.CreateJsonReader(stream,&nbsp;XmlDictionaryReaderQuotas.Max))\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ToValue(XElement.Load(reader));\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;from&nbsp;JsonSringStream&nbsp;to&nbsp;DynamicJson&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;dynamic&nbsp;Parse(Stream&nbsp;stream,&nbsp;Encoding&nbsp;encoding)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;using&nbsp;(var&nbsp;reader&nbsp;=&nbsp;JsonReaderWriterFactory.CreateJsonReader(stream,&nbsp;encoding,&nbsp;XmlDictionaryReaderQuotas.Max,&nbsp;_&nbsp;=&amp;gt;&nbsp;{&nbsp;}))\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ToValue(XElement.Load(reader));\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;create&nbsp;JsonSring&nbsp;from&nbsp;primitive&nbsp;or&nbsp;IEnumerable&nbsp;or&nbsp;Object({public&nbsp;property&nbsp;name:property&nbsp;value})&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;string&nbsp;Serialize(object&nbsp;obj)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;CreateJsonString(new&nbsp;XStreamingElement(\"root\",&nbsp;CreateTypeAttr(GetJsonType(obj)),&nbsp;CreateJsonNode(obj)));\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;private&nbsp;static&nbsp;methods\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;dynamic&nbsp;ToValue(XElement&nbsp;element)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;type&nbsp;=&nbsp;(JsonType)Enum.Parse(typeof(JsonType),&nbsp;element.Attribute(\"type\").Value);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;(type)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;JsonType.boolean:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(bool)element;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;JsonType.number:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(double)element;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;JsonType.@string:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(string)element;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;JsonType.@object:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;JsonType.array:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;new&nbsp;DynamicJson(element,&nbsp;type);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;JsonType.@null:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;null;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;JsonType&nbsp;GetJsonType(object&nbsp;obj)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(obj&nbsp;==&nbsp;null)&nbsp;return&nbsp;JsonType.@null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;(Type.GetTypeCode(obj.GetType()))\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;TypeCode.Boolean:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;JsonType.boolean;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;TypeCode.String:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;TypeCode.Char:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;TypeCode.DateTime:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;JsonType.@string;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;TypeCode.Int16:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;TypeCode.Int32:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;TypeCode.Int64:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;TypeCode.UInt16:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;TypeCode.UInt32:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;TypeCode.UInt64:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;TypeCode.Single:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;TypeCode.Double:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;TypeCode.Decimal:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;TypeCode.SByte:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;TypeCode.Byte:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;JsonType.number;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;TypeCode.Object:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(obj&nbsp;is&nbsp;IEnumerable)&nbsp;?&nbsp;JsonType.array&nbsp;:&nbsp;JsonType.@object;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;TypeCode.DBNull:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;TypeCode.Empty:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;JsonType.@null;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;XAttribute&nbsp;CreateTypeAttr(JsonType&nbsp;type)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;new&nbsp;XAttribute(\"type\",&nbsp;type.ToString());\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;object&nbsp;CreateJsonNode(object&nbsp;obj)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;type&nbsp;=&nbsp;GetJsonType(obj);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;(type)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;JsonType.@string:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;JsonType.number:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;obj;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;JsonType.boolean:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;obj.ToString().ToLower();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;JsonType.@object:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;CreateXObject(obj);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;JsonType.array:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;CreateXArray(obj&nbsp;as&nbsp;IEnumerable);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;JsonType.@null:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;null;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;IEnumerable&lt;xstreamingelement&gt;&nbsp;CreateXArray&lt;t&gt;(T&nbsp;obj)&nbsp;where&nbsp;T&nbsp;:&nbsp;IEnumerable\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;obj.Cast&lt;object&gt;()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Select(o&nbsp;=&amp;gt;&nbsp;new&nbsp;XStreamingElement(\"item\",&nbsp;CreateTypeAttr(GetJsonType(o)),&nbsp;CreateJsonNode(o)));\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;IEnumerable&lt;xstreamingelement&gt;&nbsp;CreateXObject(object&nbsp;obj)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;obj.GetType()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.GetProperties(BindingFlags.Public&nbsp;|&nbsp;BindingFlags.Instance)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Select(pi&nbsp;=&amp;gt;&nbsp;new&nbsp;{&nbsp;Name&nbsp;=&nbsp;pi.Name,&nbsp;Value&nbsp;=&nbsp;pi.GetValue(obj,&nbsp;null)&nbsp;})\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Select(a&nbsp;=&amp;gt;&nbsp;new&nbsp;XStreamingElement(a.Name,&nbsp;CreateTypeAttr(GetJsonType(a.Value)),&nbsp;CreateJsonNode(a.Value)));\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;string&nbsp;CreateJsonString(XStreamingElement&nbsp;element)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;using&nbsp;(var&nbsp;ms&nbsp;=&nbsp;new&nbsp;MemoryStream())&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;using&nbsp;(var&nbsp;writer&nbsp;=&nbsp;JsonReaderWriterFactory.CreateJsonWriter(ms,&nbsp;Encoding.Unicode))\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;element.WriteTo(writer);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.Flush();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Encoding.Unicode.GetString(ms.ToArray());\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;dynamic&nbsp;structure&nbsp;represents&nbsp;JavaScript&nbsp;Object\/Array\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readonly&nbsp;XElement&nbsp;xml;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readonly&nbsp;JsonType&nbsp;jsonType;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;create&nbsp;blank&nbsp;JSObject&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;DynamicJson()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xml&nbsp;=&nbsp;new&nbsp;XElement(\"root\",&nbsp;CreateTypeAttr(JsonType.@object));\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jsonType&nbsp;=&nbsp;JsonType.@object;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;DynamicJson(XElement&nbsp;element,&nbsp;JsonType&nbsp;type)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Debug.Assert(type&nbsp;==&nbsp;JsonType.array&nbsp;||&nbsp;type&nbsp;==&nbsp;JsonType.@object);\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xml&nbsp;=&nbsp;element;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jsonType&nbsp;=&nbsp;type;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;bool&nbsp;IsObject&nbsp;{&nbsp;get&nbsp;{&nbsp;return&nbsp;jsonType&nbsp;==&nbsp;JsonType.@object;&nbsp;}&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;bool&nbsp;IsArray&nbsp;{&nbsp;get&nbsp;{&nbsp;return&nbsp;jsonType&nbsp;==&nbsp;JsonType.array;&nbsp;}&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;has&nbsp;property&nbsp;or&nbsp;not&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;bool&nbsp;IsDefined(string&nbsp;name)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;IsObject&nbsp;&amp;amp;&amp;amp;&nbsp;(xml.Element(name)&nbsp;!=&nbsp;null);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;has&nbsp;property&nbsp;or&nbsp;not&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;bool&nbsp;IsDefined(int&nbsp;index)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;IsArray&nbsp;&amp;amp;&amp;amp;&nbsp;(xml.Elements().ElementAtOrDefault(index)&nbsp;!=&nbsp;null);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;delete&nbsp;property&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;bool&nbsp;Delete(string&nbsp;name)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;elem&nbsp;=&nbsp;xml.Element(name);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(elem&nbsp;!=&nbsp;null)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elem.Remove();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;return&nbsp;false;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;delete&nbsp;property&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;bool&nbsp;Delete(int&nbsp;index)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;elem&nbsp;=&nbsp;xml.Elements().ElementAtOrDefault(index);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(elem&nbsp;!=&nbsp;null)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elem.Remove();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;return&nbsp;false;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;mapping&nbsp;to&nbsp;Array&nbsp;or&nbsp;Class&nbsp;by&nbsp;Public&nbsp;PropertyName&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;T&nbsp;Deserialize&lt;t&gt;()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(T)Deserialize(typeof(T));\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;object&nbsp;Deserialize(Type&nbsp;type)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(IsArray)&nbsp;?&nbsp;DeserializeArray(type)&nbsp;:&nbsp;DeserializeObject(type);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;dynamic&nbsp;DeserializeValue(XElement&nbsp;element,&nbsp;Type&nbsp;elementType)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;value&nbsp;=&nbsp;ToValue(element);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(value&nbsp;is&nbsp;DynamicJson)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;=&nbsp;((DynamicJson)value).Deserialize(elementType);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Convert.ChangeType(value,&nbsp;elementType);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;object&nbsp;DeserializeObject(Type&nbsp;targetType)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;result&nbsp;=&nbsp;Activator.CreateInstance(targetType);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;dict&nbsp;=&nbsp;targetType.GetProperties(BindingFlags.Public&nbsp;|&nbsp;BindingFlags.Instance)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Where(p&nbsp;=&amp;gt;&nbsp;p.CanWrite)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.ToDictionary(pi&nbsp;=&amp;gt;&nbsp;pi.Name,&nbsp;pi&nbsp;=&amp;gt;&nbsp;pi);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(var&nbsp;item&nbsp;in&nbsp;xml.Elements())\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PropertyInfo&nbsp;propertyInfo;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!dict.TryGetValue(item.Name.LocalName,&nbsp;out&nbsp;propertyInfo))&nbsp;continue;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;value&nbsp;=&nbsp;DeserializeValue(item,&nbsp;propertyInfo.PropertyType);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;propertyInfo.SetValue(result,&nbsp;value,&nbsp;null);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;result;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;object&nbsp;DeserializeArray(Type&nbsp;targetType)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(targetType.IsArray)&nbsp;\/\/&nbsp;Foo[]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;elemType&nbsp;=&nbsp;targetType.GetElementType();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dynamic&nbsp;array&nbsp;=&nbsp;Array.CreateInstance(elemType,&nbsp;xml.Elements().Count());&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;index&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(var&nbsp;item&nbsp;in&nbsp;xml.Elements())\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array[index++]&nbsp;=&nbsp;DeserializeValue(item,&nbsp;elemType);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;array;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;\/\/&nbsp;List&lt;foo&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;elemType&nbsp;=&nbsp;targetType.GetGenericArguments()[0];\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dynamic&nbsp;list&nbsp;=&nbsp;Activator.CreateInstance(targetType);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(var&nbsp;item&nbsp;in&nbsp;xml.Elements())\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.Add(DeserializeValue(item,&nbsp;elemType));\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;list;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;Delete\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;override&nbsp;bool&nbsp;TryInvoke(InvokeBinder&nbsp;binder,&nbsp;object[]&nbsp;args,&nbsp;out&nbsp;object&nbsp;result)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;(IsArray)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;?&nbsp;Delete((int)args[0])\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;Delete((string)args[0]);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;IsDefined,&nbsp;if&nbsp;has&nbsp;args&nbsp;then&nbsp;TryGetMember\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;override&nbsp;bool&nbsp;TryInvokeMember(InvokeMemberBinder&nbsp;binder,&nbsp;object[]&nbsp;args,&nbsp;out&nbsp;object&nbsp;result)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(args.Length&nbsp;&amp;gt;&nbsp;0)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;IsDefined(binder.Name);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;Deserialize&nbsp;or&nbsp;foreach(IEnumerable)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;override&nbsp;bool&nbsp;TryConvert(ConvertBinder&nbsp;binder,&nbsp;out&nbsp;object&nbsp;result)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(binder.Type&nbsp;==&nbsp;typeof(IEnumerable)&nbsp;||&nbsp;binder.Type&nbsp;==&nbsp;typeof(object[]))\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;ie&nbsp;=&nbsp;(IsArray)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;?&nbsp;xml.Elements().Select(x&nbsp;=&amp;gt;&nbsp;ToValue(x))\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;xml.Elements().Select(x&nbsp;=&amp;gt;&nbsp;(dynamic)new&nbsp;KeyValuePair&lt;string&gt;(x.Name.LocalName,&nbsp;ToValue(x)));\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;(binder.Type&nbsp;==&nbsp;typeof(object[]))&nbsp;?&nbsp;ie.ToArray()&nbsp;:&nbsp;ie;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;Deserialize(binder.Type);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;bool&nbsp;TryGet(XElement&nbsp;element,&nbsp;out&nbsp;object&nbsp;result)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(element&nbsp;==&nbsp;null)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;ToValue(element);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;override&nbsp;bool&nbsp;TryGetIndex(GetIndexBinder&nbsp;binder,&nbsp;object[]&nbsp;indexes,&nbsp;out&nbsp;object&nbsp;result)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(IsArray)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;?&nbsp;TryGet(xml.Elements().ElementAtOrDefault((int)indexes[0]),&nbsp;out&nbsp;result)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;TryGet(xml.Element((string)indexes[0]),&nbsp;out&nbsp;result);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;override&nbsp;bool&nbsp;TryGetMember(GetMemberBinder&nbsp;binder,&nbsp;out&nbsp;object&nbsp;result)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(IsArray)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;?&nbsp;TryGet(xml.Elements().ElementAtOrDefault(int.Parse(binder.Name)),&nbsp;out&nbsp;result)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;TryGet(xml.Element(binder.Name),&nbsp;out&nbsp;result);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;bool&nbsp;TrySet(string&nbsp;name,&nbsp;object&nbsp;value)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;type&nbsp;=&nbsp;GetJsonType(value);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;element&nbsp;=&nbsp;xml.Element(name);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(element&nbsp;==&nbsp;null)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xml.Add(new&nbsp;XElement(name,&nbsp;CreateTypeAttr(type),&nbsp;CreateJsonNode(value)));\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;element.Attribute(\"type\").Value&nbsp;=&nbsp;type.ToString();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;element.ReplaceNodes(CreateJsonNode(value));\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;bool&nbsp;TrySet(int&nbsp;index,&nbsp;object&nbsp;value)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;type&nbsp;=&nbsp;GetJsonType(value);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;e&nbsp;=&nbsp;xml.Elements().ElementAtOrDefault(index);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(e&nbsp;==&nbsp;null)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xml.Add(new&nbsp;XElement(\"item\",&nbsp;CreateTypeAttr(type),&nbsp;CreateJsonNode(value)));\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.Attribute(\"type\").Value&nbsp;=&nbsp;type.ToString();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.ReplaceNodes(CreateJsonNode(value));\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;override&nbsp;bool&nbsp;TrySetIndex(SetIndexBinder&nbsp;binder,&nbsp;object[]&nbsp;indexes,&nbsp;object&nbsp;value)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(IsArray)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;?&nbsp;TrySet((int)indexes[0],&nbsp;value)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;TrySet((string)indexes[0],&nbsp;value);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;override&nbsp;bool&nbsp;TrySetMember(SetMemberBinder&nbsp;binder,&nbsp;object&nbsp;value)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(IsArray)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;?&nbsp;TrySet(int.Parse(binder.Name),&nbsp;value)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;TrySet(binder.Name,&nbsp;value);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;override&nbsp;IEnumerable&lt;string&gt;&nbsp;GetDynamicMemberNames()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(IsArray)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;?&nbsp;xml.Elements().Select((x,&nbsp;i)&nbsp;=&amp;gt;&nbsp;i.ToString())\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;xml.Elements().Select(x&nbsp;=&amp;gt;&nbsp;x.Name.LocalName);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;Serialize&nbsp;to&nbsp;JsonString&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;override&nbsp;string&nbsp;ToString()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;&lt;foo&gt;&lt;\/foo&gt;&nbsp;is&nbsp;can't&nbsp;serialize.&nbsp;replace&nbsp;to&nbsp;&lt;foo&gt;&lt;\/foo&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(var&nbsp;elem&nbsp;in&nbsp;xml.Descendants().Where(x&nbsp;=&amp;gt;&nbsp;x.Attribute(\"type\").Value&nbsp;==&nbsp;\"null\"))\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elem.RemoveNodes();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;CreateJsonString(new&nbsp;XStreamingElement(\"root\",&nbsp;CreateTypeAttr(jsonType),&nbsp;xml.Elements()));\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n}&lt;\/string&gt;&lt;\/string&gt;&lt;\/foo&gt;&lt;\/t&gt;&lt;\/xstreamingelement&gt;&lt;\/object&gt;&lt;\/t&gt;&lt;\/xstreamingelement&gt;&lt;\/ils&gt;<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p><span>View Code<\/span><\/p>\n<p><span style=\"line-height: 1.5\">&nbsp; &nbsp; &nbsp; \u8fd9\u4e2a\u4ee3\u7801\u6211\u4e5f\u4f9d\u65e7\u6ca1\u4ed4\u7ec6\u770b\uff0c\u53cd\u6b63\u4e5f\u80fd\u7528\uff0c\u6ca1\u51fa\u8fc7\u5dee\u9519\u3002<\/span><\/p>\n<p><span style=\"line-height: 1.5\">&nbsp; &nbsp; &nbsp; \u8fd9\u4e2a\u6700\u6838\u5fc3\u7684\u62e6\u8def\u864e\u89e3\u51b3\u4e86\uff0c\u540e\u9762\u7684\u4e8b\u60c5\u5c31\u987a\u7406\u6210\u7ae0\u7684\u8fdb\u884c\u5566\u3002<\/span><\/p>\n<p><strong><span style=\"line-height: 1.5\">&nbsp; &nbsp; &nbsp; 3.\u57fa\u7840\u652f\u6301API\u5305\u88c5<\/span><\/strong><\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/62d636c70768b83a59850564a4a4afc9-0.gif\" title=\"\u5206\u4eab\u4e00\u7bc7\u57fa\u4e8e.NET\u7684\u5fae\u4fe1SDK\u63d2\u56fe\" alt=\"\u5206\u4eab\u4e00\u7bc7\u57fa\u4e8e.NET\u7684\u5fae\u4fe1SDK\u63d2\u56fe\" \/><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/62d636c70768b83a59850564a4a4afc9-1.gif\" title=\"\u5206\u4eab\u4e00\u7bc7\u57fa\u4e8e.NET\u7684\u5fae\u4fe1SDK\u63d2\u56fe1\" alt=\"\u5206\u4eab\u4e00\u7bc7\u57fa\u4e8e.NET\u7684\u5fae\u4fe1SDK\u63d2\u56fe1\" \/><\/p>\n<pre>\/*--------------------------------------------------------------------------\r\n*&nbsp;BasicAPI.cs\r\n&nbsp;*Auth:deepleo\r\n*&nbsp;Date:2013.12.31\r\n*&nbsp;Email:2586662969@qq.com\r\n*--------------------------------------------------------------------------*\/using&nbsp;System;using&nbsp;System.Collections.Generic;using&nbsp;System.Linq;using&nbsp;System.Text;using&nbsp;System.Net.Http;using&nbsp;Codeplex.Data;using&nbsp;System.IO;namespace&nbsp;Deepleo.Weixin.SDK\r\n{&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u5bf9\u5e94\u5fae\u4fe1API\u7684&nbsp;\"\u57fa\u7840\u652f\u6301\"&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;class&nbsp;BasicAPI\r\n&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u68c0\u67e5\u7b7e\u540d\u662f\u5426\u6b63\u786e:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;http:\/\/mp.weixin.qq.com\/wiki\/index.php?title=%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;AccessToken\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;returns&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;true:&nbsp;check&nbsp;signature&nbsp;success&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;false:&nbsp;check&nbsp;failed,&nbsp;\u975e\u5fae\u4fe1\u5b98\u65b9\u8c03\u7528!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/returns&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;bool&nbsp;CheckSignature(string&nbsp;signature,&nbsp;string&nbsp;timestamp,&nbsp;string&nbsp;nonce,&nbsp;string&nbsp;token,&nbsp;out&nbsp;string&nbsp;ent)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;arr&nbsp;=&nbsp;new[]&nbsp;{&nbsp;token,&nbsp;timestamp,&nbsp;nonce&nbsp;}.OrderBy(z&nbsp;=&amp;gt;&nbsp;z).ToArray();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;arrString&nbsp;=&nbsp;string.Join(\"\",&nbsp;arr);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;sha1&nbsp;=&nbsp;System.Security.Cryptography.SHA1.Create();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;sha1Arr&nbsp;=&nbsp;sha1.ComputeHash(Encoding.UTF8.GetBytes(arrString));\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuilder&nbsp;enText&nbsp;=&nbsp;new&nbsp;StringBuilder();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(var&nbsp;b&nbsp;in&nbsp;sha1Arr)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enText.AppendFormat(\"{0:x2}\",&nbsp;b);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ent&nbsp;=&nbsp;enText.ToString();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;signature&nbsp;==&nbsp;enText.ToString();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u83b7\u53d6AccessToken&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;http:\/\/mp.weixin.qq.com\/wiki\/index.php?title=%E8%8E%B7%E5%8F%96access_token\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;returns&gt;access_toke&lt;\/returns&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;dynamic&nbsp;GetAccessToken(&nbsp;string&nbsp;appid,&nbsp;string&nbsp;secrect)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;url&nbsp;=&nbsp;string.Format(\"https:\/\/api.weixin.qq.com\/cgi-bin\/token?grant_type={0}&amp;amp;appid={1}&amp;amp;secret={2}\",&nbsp;\"client_credential\",&nbsp;appid,&nbsp;secrect);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;client&nbsp;=&nbsp;new&nbsp;HttpClient();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;result&nbsp;=&nbsp;client.GetAsync(url).Result;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!result.IsSuccessStatusCode)&nbsp;return&nbsp;string.Empty;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;token&nbsp;=&nbsp;DynamicJson.Parse(result.Content.ReadAsStringAsync().Result);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;token;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u4e0a\u4f20\u591a\u5a92\u4f53\u6587\u4ef6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;http:\/\/mp.weixin.qq.com\/wiki\/index.php?title=%E4%B8%8A%E4%BC%A0%E4%B8%8B%E8%BD%BD%E5%A4%9A%E5%AA%92%E4%BD%93%E6%96%87%E4%BB%B6\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;1.\u4e0a\u4f20\u7684\u5a92\u4f53\u6587\u4ef6\u9650\u5236\uff1a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/\u56fe\u7247\uff08image)&nbsp;:&nbsp;1MB\uff0c\u652f\u6301JPG\u683c\u5f0f&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/\u8bed\u97f3\uff08voice\uff09\uff1a1MB\uff0c\u64ad\u653e\u957f\u5ea6\u4e0d\u8d85\u8fc760s\uff0c\u652f\u6301MP4\u683c\u5f0f&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/\u89c6\u9891\uff08video\uff09\uff1a10MB\uff0c\u652f\u6301MP4\u683c\u5f0f&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/\u7f29\u7565\u56fe\uff08thumb)\uff1a64KB\uff0c\u652f\u6301JPG\u683c\u5f0f&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/2.\u5a92\u4f53\u6587\u4ef6\u5728\u540e\u53f0\u4fdd\u5b58\u65f6\u95f4\u4e3a3\u5929\uff0c\u53733\u5929\u540emedia_id\u5931\u6548&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;returns&gt;media_id&lt;\/returns&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;string&nbsp;UploadMedia(string&nbsp;token,&nbsp;string&nbsp;type,&nbsp;string&nbsp;file)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;url&nbsp;=&nbsp;string.Format(\"http:\/\/api.weixin.qq.com\/cgi-bin\/media\/upload?access_token={0}&amp;amp;type={1}&amp;amp;filename={2}\",&nbsp;token,&nbsp;type,&nbsp;Path.GetFileName(file));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;client&nbsp;=&nbsp;new&nbsp;HttpClient();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;result&nbsp;=&nbsp;client.PostAsync(url,&nbsp;new&nbsp;StreamContent(new&nbsp;FileStream(file,&nbsp;FileMode.Open,&nbsp;FileAccess.Read)));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!result.Result.IsSuccessStatusCode)&nbsp;return&nbsp;string.Empty;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;media&nbsp;=&nbsp;DynamicJson.Parse(result.Result.Content.ReadAsStringAsync().Result);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;media.media_id;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n}<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p><span>View Code<\/span><\/p>\n<p>&nbsp; &nbsp; &nbsp; &nbsp;<strong>4.\u53d1\u9001\u6d88\u606f\u5305\u88c5<\/strong><\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/62d636c70768b83a59850564a4a4afc9-0.gif\" title=\"\u5206\u4eab\u4e00\u7bc7\u57fa\u4e8e.NET\u7684\u5fae\u4fe1SDK\u63d2\u56fe\" alt=\"\u5206\u4eab\u4e00\u7bc7\u57fa\u4e8e.NET\u7684\u5fae\u4fe1SDK\u63d2\u56fe\" \/><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/62d636c70768b83a59850564a4a4afc9-1.gif\" title=\"\u5206\u4eab\u4e00\u7bc7\u57fa\u4e8e.NET\u7684\u5fae\u4fe1SDK\u63d2\u56fe1\" alt=\"\u5206\u4eab\u4e00\u7bc7\u57fa\u4e8e.NET\u7684\u5fae\u4fe1SDK\u63d2\u56fe1\" \/><\/p>\n<pre>\/*--------------------------------------------------------------------------\r\n*&nbsp;SendMessageAPI.cs\r\n&nbsp;*Auth:deepleo\r\n*&nbsp;Date:2013.12.31\r\n*&nbsp;Email:2586662969@qq.com\r\n*--------------------------------------------------------------------------*\/using&nbsp;System;using&nbsp;System.Collections.Generic;using&nbsp;System.Linq;using&nbsp;System.Text;using&nbsp;Codeplex.Data;using&nbsp;System.Net;using&nbsp;System.Net.Http;namespace&nbsp;Deepleo.Weixin.SDK\r\n{&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u5bf9\u5e94\u5fae\u4fe1API\u7684&nbsp;\"\u53d1\u9001\u6d88\u606f\u201d&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;class&nbsp;SendMessageAPI\r\n&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u88ab\u52a8\u56de\u590d\u6d88\u606f&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;\u5fae\u4fe1\u670d\u52a1\u5668\u63a8\u9001\u7684\u6d88\u606f\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;\u7528\u6237\u81ea\u5b9a\u4e49\u7684\u6d88\u606f\u6267\u884c\u8005\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;returns&gt;&lt;\/returns&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;string&nbsp;Relay(WeixinMessage&nbsp;message,&nbsp;IWeixinExecutor&nbsp;executor)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;executor.Execute(message);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u4e3b\u52a8\u53d1\u9001\u5ba2\u670d\u6d88\u606f&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;http:\/\/mp.weixin.qq.com\/wiki\/index.php?title=%E5%8F%91%E9%80%81%E5%AE%A2%E6%9C%8D%E6%B6%88%E6%81%AF\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u5f53\u7528\u6237\u4e3b\u52a8\u53d1\u6d88\u606f\u7ed9\u516c\u4f17\u53f7\u7684\u65f6\u5019&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u5f00\u53d1\u8005\u5728\u4e00\u6bb5\u65f6\u95f4\u5185\uff08\u76ee\u524d\u4e3a24\u5c0f\u65f6\uff09\u53ef\u4ee5\u8c03\u7528\u5ba2\u670d\u6d88\u606f\u63a5\u53e3\uff0c\u572824\u5c0f\u65f6\u5185\u4e0d\u9650\u5236\u53d1\u9001\u6b21\u6570\u3002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;json\u683c\u5f0f\u7684\u6d88\u606f\uff0c\u5177\u4f53\u683c\u5f0f\u8bf7\u53c2\u8003\u5fae\u4fe1\u5b98\u65b9API\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;returns&gt;&lt;\/returns&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;bool&nbsp;Send(string&nbsp;token,&nbsp;string&nbsp;msg)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;client&nbsp;=&nbsp;new&nbsp;HttpClient();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;task&nbsp;=&nbsp;client.PostAsync(string.Format(\"https:\/\/api.weixin.qq.com\/cgi-bin\/message\/custom\/send?access_token={0}\",&nbsp;token),&nbsp;new&nbsp;StringContent(msg)).Result;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;task.IsSuccessStatusCode;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n}<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p><span>View Code<\/span><\/p>\n<p>&nbsp; &nbsp; &nbsp; &nbsp;5.\u5176\u4ed6\u4ee3\u7801\u5c31\u4e0d\u4e00\u4e00\u8d34\u51fa\u6765\u4e86\u3002\u53ef\u4ee5\u5728\u6587\u7ae0\u6700\u540e\u81ea\u884c\u4e0b\u8f7d\u5b8c\u6574\u4ee3\u7801\u67e5\u9605\u3002<\/p>\n<p><span style=\"line-height: 1.5\">&nbsp; &nbsp; &nbsp; &nbsp;6.\u5904\u7406\u4e0e\u5fae\u4fe1\u670d\u52a1\u5668\u901a\u4fe1\u7684WeixinController.cs,WeixinExecutor.cs<\/span><\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/62d636c70768b83a59850564a4a4afc9-0.gif\" title=\"\u5206\u4eab\u4e00\u7bc7\u57fa\u4e8e.NET\u7684\u5fae\u4fe1SDK\u63d2\u56fe\" alt=\"\u5206\u4eab\u4e00\u7bc7\u57fa\u4e8e.NET\u7684\u5fae\u4fe1SDK\u63d2\u56fe\" \/><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/62d636c70768b83a59850564a4a4afc9-1.gif\" title=\"\u5206\u4eab\u4e00\u7bc7\u57fa\u4e8e.NET\u7684\u5fae\u4fe1SDK\u63d2\u56fe1\" alt=\"\u5206\u4eab\u4e00\u7bc7\u57fa\u4e8e.NET\u7684\u5fae\u4fe1SDK\u63d2\u56fe1\" \/><\/p>\n<pre>using&nbsp;System;using&nbsp;System.Collections.Generic;using&nbsp;System.IO;using&nbsp;System.Linq;using&nbsp;System.Text;using&nbsp;System.Web;using&nbsp;System.Web.Mvc;using&nbsp;System.Xml.Linq;using&nbsp;Deepleo.Weixin.SDK;using&nbsp;Deepleo.NewTon.Web.Services;using&nbsp;System.Xml;using&nbsp;Deepleo.NewTon.Framework.Services.Admin;using&nbsp;Deepleo.Log;namespace&nbsp;Deepleo.NewTon.Web.Controllers\r\n{&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;class&nbsp;WeixinController&nbsp;:&nbsp;Controller\r\n&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;WeixinController()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u5fae\u4fe1\u540e\u53f0\u9a8c\u8bc1\u5730\u5740\uff08\u4f7f\u7528Get\uff09\uff0c\u5fae\u4fe1\u540e\u53f0\u7684\u201c\u63a5\u53e3\u914d\u7f6e\u4fe1\u606f\u201d\u7684Url&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[HttpGet]\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ActionName(\"Index\")]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;ActionResult&nbsp;Get(string&nbsp;signature,&nbsp;string&nbsp;timestamp,&nbsp;string&nbsp;nonce,&nbsp;string&nbsp;echostr)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;token&nbsp;=&nbsp;new&nbsp;SettingsService().Get().Token;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(string.IsNullOrEmpty(_token))&nbsp;return&nbsp;Content(\"\u8bf7\u5148\u8bbe\u7f6eToken\uff01\");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;ent&nbsp;=&nbsp;\"\";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!BasicAPI.CheckSignature(signature,&nbsp;timestamp,&nbsp;nonce,&nbsp;_token,&nbsp;out&nbsp;ent))\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;WeixinLogService().Create(new&nbsp;Framework.Entities.WeixinLog(\"get(failed)\",&nbsp;string.Format(\"(get&nbsp;weixin)signature:{0},timestamp:{1},nonce:{2},echostr:{3},ent:{4},token:{5}\",\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;signature,&nbsp;timestamp,&nbsp;nonce,&nbsp;echostr,&nbsp;ent,&nbsp;_token)));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Content(\"\u53c2\u6570\u9519\u8bef\uff01\");\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Content(echostr);&nbsp;\/\/\u8fd4\u56de\u968f\u673a\u5b57\u7b26\u4e32\u5219\u8868\u793a\u9a8c\u8bc1\u901a\u8fc7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;\u7528\u6237\u53d1\u9001\u6d88\u606f\u540e\uff0c\u5fae\u4fe1\u5e73\u53f0\u81ea\u52a8Post\u4e00\u4e2a\u8bf7\u6c42\u5230\u8fd9\u91cc\uff0c\u5e76\u7b49\u5f85\u54cd\u5e94XML\u3002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[HttpPost]\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ActionName(\"Index\")]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;ActionResult&nbsp;Post(string&nbsp;signature,&nbsp;string&nbsp;timestamp,&nbsp;string&nbsp;nonce,&nbsp;string&nbsp;echostr)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WeixinMessage&nbsp;message&nbsp;=&nbsp;null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;using&nbsp;(var&nbsp;streamReader&nbsp;=&nbsp;new&nbsp;StreamReader(Request.InputStream))\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message&nbsp;=&nbsp;AcceptMessageAPI.Parse(streamReader.ReadToEnd());\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;&nbsp;response&nbsp;=&nbsp;new&nbsp;WeixinExecutor().Execute(message);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;new&nbsp;ContentResult\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Content&nbsp;=&nbsp;response,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ContentType&nbsp;=&nbsp;\"text\/xml\",\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ContentEncoding&nbsp;=&nbsp;System.Text.UTF8Encoding.UTF8\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n}<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p><span>View Code<\/span><\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/62d636c70768b83a59850564a4a4afc9-0.gif\" title=\"\u5206\u4eab\u4e00\u7bc7\u57fa\u4e8e.NET\u7684\u5fae\u4fe1SDK\u63d2\u56fe\" alt=\"\u5206\u4eab\u4e00\u7bc7\u57fa\u4e8e.NET\u7684\u5fae\u4fe1SDK\u63d2\u56fe\" \/><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/62d636c70768b83a59850564a4a4afc9-1.gif\" title=\"\u5206\u4eab\u4e00\u7bc7\u57fa\u4e8e.NET\u7684\u5fae\u4fe1SDK\u63d2\u56fe1\" alt=\"\u5206\u4eab\u4e00\u7bc7\u57fa\u4e8e.NET\u7684\u5fae\u4fe1SDK\u63d2\u56fe1\" \/><\/p>\n<pre>\/*--------------------------------------------------------------------------\r\n*&nbsp;WeixinExecutor.cs\r\n&nbsp;*Auth:deepleo\r\n*&nbsp;Date:2013.12.31\r\n*&nbsp;Email:2586662969@qq.com\r\n*--------------------------------------------------------------------------*\/using&nbsp;System;using&nbsp;System.Collections.Generic;using&nbsp;System.Linq;using&nbsp;System.Web;using&nbsp;Deepleo.Weixin.SDK;using&nbsp;System.Text;using&nbsp;System.Text.RegularExpressions;namespace&nbsp;Deepleo.Weixin\r\n{&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;class&nbsp;WeixinExecutor&nbsp;:&nbsp;IWeixinExecutor\r\n&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;WeixinExecutor()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;Execute(WeixinMessage&nbsp;message)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;result&nbsp;=&nbsp;\"\";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;openId&nbsp;=&nbsp;message.Body.FromUserName.Value;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;myUserName&nbsp;=&nbsp;message.Body.ToUserName.Value;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;(message.Type)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;WeixinMessageType.Text:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;userMessage&nbsp;=&nbsp;message.Body.Content.Value;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;RepayText(openId,&nbsp;myUserName,&nbsp;\"\u6b22\u8fce\u4f7f\u7528\");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;WeixinMessageType.Event:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;eventType&nbsp;=&nbsp;message.Body.Event.Value.ToLower();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;eventKey&nbsp;=&nbsp;message.Body.EventKey.Value;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;(eventType)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;\"subscribe\":\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;RepayText(openId,&nbsp;myUserName,&nbsp;\"\u6b22\u8fce\u8ba2\u9605\");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;\"unsubscribe\":\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;RepayText(openId,&nbsp;myUserName,&nbsp;\"\u6b22\u8fce\u518d\u6765\");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;\"scan\":\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;RepayText(openId,&nbsp;myUserName,&nbsp;\"\u6b22\u8fce\u4f7f\u7528\");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;\"location\":\/\/\u7528\u6237\u8fdb\u5165\u5e94\u7528\u65f6\u8bb0\u5f55\u7528\u6237\u5730\u7406\u4f4d\u7f6e\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#region&nbsp;location&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;lat&nbsp;=&nbsp;message.Body.Latitude.Value.ToString();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;lng&nbsp;=&nbsp;message.Body.Longitude.Value.ToString();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;pcn&nbsp;=&nbsp;message.Body.Precision.Value.ToString();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#endregion\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;\"click\":&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;(eventKey)\/\/refer&nbsp;to\uff1a&nbsp;Recources\/menu.json&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;\"myaccount\":&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#region&nbsp;\u6211\u7684\u8d26\u6237\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;RepayText(openId,&nbsp;myUserName,&nbsp;\"\u6211\u7684\u8d26\u6237.\");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#endregion\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;string.Format(\"&lt;xml&gt;&lt;tousername&gt;&lt;\/tousername&gt;\"&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"&lt;fromusername&gt;&lt;\/fromusername&gt;\"&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"&lt;createtime&gt;{2}&lt;\/createtime&gt;\"&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"&lt;msgtype&gt;&lt;\/msgtype&gt;\"&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"&lt;content&gt;&lt;\/content&gt;\"&nbsp;+&nbsp;\"&lt;\/xml&gt;\",\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;openId,&nbsp;myUserName,&nbsp;DateTime.Now.ToBinary(),&nbsp;\"\u6ca1\u6709\u54cd\u5e94\u83dc\u5355\u4e8b\u4ef6\");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;string.Format(\"&lt;xml&gt;&lt;tousername&gt;&lt;\/tousername&gt;\"&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"&lt;fromusername&gt;&lt;\/fromusername&gt;\"&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"&lt;createtime&gt;{2}&lt;\/createtime&gt;\"&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"&lt;msgtype&gt;&lt;\/msgtype&gt;\"&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"&lt;content&gt;&lt;\/content&gt;\"&nbsp;+&nbsp;\"&lt;\/xml&gt;\",\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;openId,&nbsp;myUserName,&nbsp;DateTime.Now.ToBinary(),&nbsp;string.Format(\"\u672a\u5904\u7406\u6d88\u606f\u7c7b\u578b:{0}\",&nbsp;message.Type));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;result;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;string&nbsp;RepayText(string&nbsp;toUserName,&nbsp;string&nbsp;fromUserName,&nbsp;string&nbsp;content)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;string.Format(\"&lt;xml&gt;&lt;tousername&gt;&lt;\/tousername&gt;\"&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"&lt;fromusername&gt;&lt;\/fromusername&gt;\"&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"&lt;createtime&gt;{2}&lt;\/createtime&gt;\"&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"&lt;msgtype&gt;&lt;\/msgtype&gt;\"&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"&lt;content&gt;&lt;\/content&gt;\"&nbsp;+&nbsp;\"&lt;\/xml&gt;\",\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;toUserName,&nbsp;fromUserName,&nbsp;DateTime.Now.ToBinary(),&nbsp;content);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;string&nbsp;RepayNews(string&nbsp;toUserName,&nbsp;string&nbsp;fromUserName,&nbsp;List&lt;weixinnews&gt;&nbsp;news)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;couponesBuilder&nbsp;=&nbsp;new&nbsp;StringBuilder();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;couponesBuilder.Append(string.Format(\"&lt;xml&gt;&lt;tousername&gt;&lt;\/tousername&gt;\"&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"&lt;fromusername&gt;&lt;\/fromusername&gt;\"&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"&lt;createtime&gt;{2}&lt;\/createtime&gt;\"&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"&lt;msgtype&gt;&lt;\/msgtype&gt;\"&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"&lt;articlecount&gt;{3}&lt;\/articlecount&gt;&lt;articles&gt;\",\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;toUserName,&nbsp;fromUserName,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DateTime.Now.ToBinary(),\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;news.Count\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(var&nbsp;c&nbsp;in&nbsp;news)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;couponesBuilder.Append(string.Format(\"&lt;item&gt;&lt;title&gt;&lt;\/title&gt;\"&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"&lt;description&gt;&lt;\/description&gt;\"&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"&lt;picurl&gt;&lt;\/picurl&gt;\"&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"&lt;url&gt;&lt;\/url&gt;\"&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"&lt;\/item&gt;\",\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c.Title,&nbsp;c.Description,&nbsp;c.PicUrl,&nbsp;c.Url\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;));\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;couponesBuilder.Append(\"&lt;\/articles&gt;&lt;\/xml&gt;\");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;couponesBuilder.ToString();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;class&nbsp;WeixinNews\r\n&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;Title&nbsp;{&nbsp;set;&nbsp;get;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;Description&nbsp;{&nbsp;set;&nbsp;get;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;PicUrl&nbsp;{&nbsp;set;&nbsp;get;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;Url&nbsp;{&nbsp;set;&nbsp;get;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n}&lt;\/weixinnews&gt;<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u4ee5\u4e0a\u5c31\u662f\u5206\u4eab\u4e00\u7bc7\u57fa\u4e8e.NET\u7684\u5fae\u4fe1SDK\u7684\u8be6\u7ec6\u5185\u5bb9\uff0c\u66f4\u591a\u8bf7\u5173\u6ce8\u7c73\u4e91\u5176\u5b83\u76f8\u5173\u6587\u7ae0\uff01<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4e00\u3001\u524d\u8a00 &nbsp; &nbsp; &nbsp; \u7279\u522b\u4e0d\u559c\u6b22\u9ebb\u70e6\u7684\u4e00\u4e2a\u4eba\uff0c\u6700\u8fd1\u78b0\u5230\u4e86\u5fae\u4fe1\u5f00\u53d1\u3002\u4e0b\u8f7d\u4e0b\u6765\u4e86\u4e00\u4e9b\u5176\u4ed6\u4eba\u5199\u7684\u5fae\u4fe1\u5f00\u53d1\u201c\u6846\u67b6\u201d\uff0c\u4f46\u662f\u88ab\u6076\u5fc3\u5230\u4e86\uff0c\u5b9e\u73b0\u7684\u592a\u81c3\u80bf\u5566\u3002 &nbsp; &nbsp; &nbsp; \u6700\u4e0d\u559c\u6b22\u7684\u5c31\u662f\u628a\u5fae\u4fe1\u8fd4\u56de\u7684xml\u6d88\u606f\u5728\u7ec4\u88c5\u6210\u5b9e\u4f53\u7c7b\uff0c\u6240\u4ee5\u4f1a\u6bd4\u8f83\u81c3\u80bf\uff0c\u73b0\u5728\u90fd\u63d0\u5021\u8f7b\u91cf\u7ea7\uff0c\u6240\u4ee5\u6709\u4ec0\u4e48\u529e\u6cd5\u53ef\u4ee5\u907f\u514d\u5927\u91cf\u5b9e\u4f53\u7c7b\u7684\u5b58\u5728\u5462\u3002 &nbsp; &nbsp; &nbsp; \u5f53\u7136\uff0c\u8fd8\u6709\u5305\u88c5\u7684\u6bd4\u8f83\u7e41\u6742\uff0c\u770b\u5b8c\u5b98\u65b9API\u540e\uff0c\u518d\u770b&#8221;\u6846\u67b6&#8221;\uff0c\u8ba9\u4eba\u611f\u89c9\u4e00\u5934\u96fe\u6c34\uff0c\u4e0d\u591f\u6e05\u6670\u3001\u660e\u4e86\u3002 \u4e8c\u3001\u6211\u7684\u5b9e\u73b0\u601d\u8def &nbsp; &nbsp; &nbsp; \u6211\u7684\u5fae\u4fe1SDK\uff08\u4e0d\u6562\u81ea\u79f0\u6846\u67b6\uff09\uff0c\u6700\u91cd\u8981\u7684\u5b9e\u73b02\u4e2a\u76ee\u6807\uff1a &nbsp; &nbsp; &nbsp; 1.\u8f7b\u91cf\u7ea7\uff0c\u5c31\u662f\u8981\u6452\u5f03\u5b9e\u4f53\u7c7b\uff0c\u5c3d\u91cf\u5c11\u7684\u7533\u660eEntity\uff0c\u51cf\u5c11SDK\u7684\u4f53\u91cf\uff1b &nbsp; &nbsp; &nbsp; 2.\u7b80\u5355\u3001\u660e\u4e86\uff0c\u5c31\u662fSDK\u7c7b\u7684\u5212\u5206\u548c\u5b98\u65b9API\u4fdd\u6301\u4e00\u81f4\uff0c\u8ba9\u4eba\u4e00\u770b\u5c31\u61c2\u4f60\u7684\u7528\u610f\u3002 &nbsp; &nbsp; &nbsp; \u7528\u6237\u53d1\u9001\u8bf7\u662f\u9996\u5148POST\u5230\u5fae\u4fe1\u670d\u52a1\u5668\u7684\uff0c\u7136\u540e\u5fae\u4fe1\u670d\u52a1\u5668\u5728POST\u5230\u6211\u7684\u670d\u52a1\u5668\uff0c\u8fd9\u4e2a\u63a5\u53d7\u7684\u6d88\u606f\u662fxml,\u6211\u731c\u6d4b\u4e3a\u4ec0\u4e48\u662fxml,\u800c\u4e0d\u662f\u66f4\u8f7b\u91cf\u7ea7\u7684json\uff0c\u662f\u4e3a\u4e86\u66f4\u597d\u7684\u517c\u5bb9\u6027\uff0c\u6bd5\u7adfxml\u66f4\u901a\u7528\u4e00\u4e9b\uff08\u8bf4\u9519\u4e86\uff0c\u8bf7\u6307\u51fa\u6765\uff09\u3002\u800c\u6211\u4eec\u4e3b\u52a8\u8c03\u7528\u5fae\u4fe1\u7684\u4e00\u4e9bAPI\u65f6\uff0c\u5b83\u8fd4\u56de\u7684\u662fjson\u683c\u5f0f\uff0c\u6211\u9760\uff0c\u8981\u6b7b\u554a\uff0c\u9ad8\u5927\u4e0a\u554a\u3002\u4f60\u4eec\u7684\u526f\u603b\u88c1\u5f20\u5c0f\u9f99\u4e0d\u77e5\u9053\u8fd9\u4e8b\u5417\uff1f\u597d\u5427\uff0c\u8fd9\u6837\u5176\u5b9e\u4e5f\u53ef\u4ee5\u7684\u3002 &nbsp; &nbsp; &nbsp; &nbsp;\u5176\u5b9e\uff0c\u8c03\u7528\u5fae\u4fe1\u7684\u5de5\u4f5c\u539f\u7406\u5f88\u7b80\u5355\uff0c\u6ca1\u6709\u5fc5\u8981\u4e0a\u6765\u5c31\u6846\u67b6\u4ec0\u4e48\u7684\uff0c\u6211\u76f8\u4fe1\u662f\u4e2a\u5408\u683c\u7684\u7a0b\u5e8f\u5458\u90fd\u80fd\u505a\u51fa\u6765\u3002 &nbsp; &nbsp; &nbsp; &nbsp;\u6211\u4eec\u7684\u670d\u52a1\u5668\u53ea\u9700\u8981\u4e00\u4e2aGET,\u548c\u4e00\u4e2aPOST\u5c31\u53ef\u4ee5\u548c\u5fae\u4fe1\u901a\u4fe1\u4e86\uff0c\u4ece\u8fd9\u4e00\u70b9\u6765\u770b\uff0c\u8bbe\u8ba1\u7684\u8fd8\u662f\u6bd4\u8f83\u4eba\u6027\u5316\u7684\uff0c\u8d5e\u4e00\u4e2a\u3002GET\u7528\u4e8e\u63a5\u901a\u5fae\u4fe1\u670d\u52a1\u7684\u6821\u9a8c\uff0c\u9a8c\u8bc1\uff1bPOST\u7528\u4e8e\u63a5\u6536\u5fae\u4fe1\u670d\u52a1\u5668\u8fc7\u6765\u7684\u6d88\u606f\uff0c\u7136\u540e\u5c06Response\u7ec4\u88c5\u597d\u8fd4\u56de\u5373\u53ef\u3002 \u4e09\u3001\u4e0a\u4ee3\u7801 &nbsp; &nbsp; &nbsp; &nbsp;\u597d\u4e86\uff0c\u5e9f\u8bdd\u4e0d\u591a\u8bf4\u4e86\u3002 &nbsp; &nbsp; &nbsp; &nbsp;\u7531\u4e8e\u5fae\u4fe1\u670d\u52a1\u5668Post\u7ed9\u6211\u4eec\u7684\u662fxml\u6d88\u606f\uff0c\u8fd4\u56de\u7684\u662fjson,\u6240\u4ee5\u9700\u8981\u4e92\u8f6c\u3002\u8fd9\u6837\u5c31\u5b58\u57283\u79cd\u7c7b\u578b\u7684format,\u8fd9\u4e5f\u662f\u5927\u91cf\u7684\u6846\u67b6\u5b9a\u4e49\u5b9e\u4f53\u7c7b\u5bfc\u81f4\u6846\u67b6\u4e0d\u591f\u8f7b\u91cf\u7ea7\u7684\u7684\u539f\u56e0\u4e4b\u6240\u5728\u3002 &nbsp; &nbsp; &nbsp; &nbsp;\u5b9e\u73b0\u7b2c\u4e00\u4e2a\u76ee\u6807\uff0c\u6211\u4e3b\u8981\u7528\u5230\u4e86.net Framework4.0\u7684Dynamic\u7279\u6027\uff0c\u548c\u4e00\u4e2a\u5c06xml\u5b57\u7b26\u4e32\u81ea\u52a8\u8f6c\u6362\u6210Dynamic Object\u7684DynamicXml.cs\u7c7b\uff0c\u8fd8\u6709\u4e00\u4e2a\u5c06json\u5b57\u7b26\u4e32\u81ea\u52a8\u8f6c\u6362\u6210Dynamic Object\u7684DynamicJson.cs\u7c7b\u3002 &nbsp; [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[],"class_list":["post-28460","post","type-post","status-publish","format-standard","hentry","category-19"],"_links":{"self":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/28460","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/comments?post=28460"}],"version-history":[{"count":0,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/28460\/revisions"}],"wp:attachment":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/media?parent=28460"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/categories?post=28460"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/tags?post=28460"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}