"use strict";(self.webpackChunktouchsocket=self.webpackChunktouchsocket||[]).push([[6128],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>y});var l=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(l=0;l=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=l.createContext({}),s=function(e){var t=l.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=s(e.components);return l.createElement(c.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return l.createElement(l.Fragment,{},t)}},k=l.forwardRef((function(e,t){var n=e.components,a=e.mdxType,r=e.originalType,c=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),k=s(n),y=a,d=k["".concat(c,".").concat(y)]||k[y]||p[y]||r;return n?l.createElement(d,o(o({ref:t},u),{},{components:n})):l.createElement(d,o({ref:t},u))}));function y(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=n.length,o=new Array(r);o[0]=k;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i.mdxType="string"==typeof e?e:a,o[1]=i;for(var s=2;s{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>r,metadata:()=>i,toc:()=>s});var l=n(7462),a=(n(7294),n(3905));const r={id:"ipackage",title:"\u5305\u5e8f\u5217\u5316\u6a21\u5f0f"},o=void 0,i={unversionedId:"ipackage",id:"ipackage",title:"\u5305\u5e8f\u5217\u5316\u6a21\u5f0f",description:"\u4e00\u3001\u8bf4\u660e",source:"@site/docs/ipackage.mdx",sourceDirName:".",slug:"/ipackage",permalink:"/touchsocket/docs/ipackage",draft:!1,editUrl:"https://gitee.com/rrqm_home/touchsocket/tree/master/handbook/docs/ipackage.mdx",tags:[],version:"current",lastUpdatedBy:"\u82e5\u6c5d\u68cb\u8317",lastUpdatedAt:1675770803,formattedLastUpdatedAt:"Feb 7, 2023",frontMatter:{id:"ipackage",title:"\u5305\u5e8f\u5217\u5316\u6a21\u5f0f"},sidebar:"docs",previous:{title:"\u63d2\u4ef6\u7cfb\u7edf",permalink:"/touchsocket/docs/pluginsmanager"},next:{title:"\u5176\u4ed6\u76f8\u5173\u529f\u80fd\u7c7b",permalink:"/touchsocket/docs/othercore"}},c={},s=[{value:"\u4e00\u3001\u8bf4\u660e",id:"\u4e00\u8bf4\u660e",level:2},{value:"\u4e8c\u3001\u7279\u70b9",id:"\u4e8c\u7279\u70b9",level:2},{value:"\u4e09\u3001\u4f7f\u7528",id:"\u4e09\u4f7f\u7528",level:2},{value:"\u56db\u3001\u6027\u80fd\u8bc4\u6d4b",id:"\u56db\u6027\u80fd\u8bc4\u6d4b",level:2}],u={toc:s};function p(e){let{components:t,...r}=e;return(0,a.kt)("wrapper",(0,l.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"\u4e00\u8bf4\u660e"},"\u4e00\u3001\u8bf4\u660e"),(0,a.kt)("p",null,"\u5305\u5e8f\u5217\u5316\u6a21\u5f0f\u662f\u4e3a\u4e86\u89e3\u51b3",(0,a.kt)("strong",{parentName:"p"},"\u6781\u9650\u5e8f\u5217\u5316"),"\u7684\u95ee\u9898\u3002\u5e38\u89c4\u5e8f\u5217\u5316\u7684\u74f6\u9888\uff0c\u4e3b\u8981\u662f\u53cd\u5c04\u3001\u8868\u8fbe\u5f0f\u6811\u3001\u521b\u5efa\u5bf9\u8c61\u7b49\u51e0\u4e2a\u65b9\u9762\uff0c\u8fd9\u51e0\u4e2a\u95ee\u9898\u5728\u8fd0\u884c\u65f6\u9636\u6bb5\uff0c\u90fd\u6ca1\u6709\u4e00\u4e2a\u597d\u7684\u89e3\u51b3\u65b9\u6848\u3002\u76ee\u524d\u5728net6\u4ee5\u540e\uff0c\u5fae\u8f6f\u5927\u529b\u652f\u6301\u6e90\u4ee3\u7801\u751f\u6210\uff0c\u8fd9\u4f7f\u5f97\u8fd9\u7c7b\u95ee\u9898\u5f97\u5230\u4e86\u5f88\u5927\u7a0b\u5ea6\u7684\u89e3\u51b3\u3002\u4f46\u662f\u5bf9\u4e8e\u8001\u9879\u76ee\uff0c\u6216\u8005\u65e0\u6cd5\u4f7f\u7528net6\u548cvs2022\u4ee5\u4e0a\u7684\u9879\u76ee\uff0c\u662f\u65e0\u6cd5\u4f7f\u7528\u7684\u3002\u6240\u4ee5\uff0c\u8fd9\u65f6\u5019\u5305\u5e8f\u5217\u5316\u6a21\u5f0f\u5c31\u663e\u5f97\u975e\u5e38\u9700\u8981\u4e86\u3002"),(0,a.kt)("h2",{id:"\u4e8c\u7279\u70b9"},"\u4e8c\u3001\u7279\u70b9"),(0,a.kt)("p",null,"\u3010\u4f18\u70b9\u3011"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"\u7b80\u5355\u3001\u53ef\u9760\u3001\u9ad8\u6548"),(0,a.kt)("li",{parentName:"ol"},"\u53ef\u4ee5\u652f\u6301\u6240\u6709\u7c7b\u578b\uff08\u9700\u8981\u81ea\u5df1\u7f16\u5199\u4ee3\u7801\uff09"),(0,a.kt)("li",{parentName:"ol"},"\u6570\u636e\u91cf\u6700\u5c11\uff08\u4ece\u7406\u8bba\u6765\u8bf4\u8fd9\u662f\u5360\u6570\u636e\u91cf\u6700\u8f7b\u91cf\u7684\u8bbe\u8ba1\uff09")),(0,a.kt)("p",null,"\u3010\u7f3a\u70b9\u3011"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"\u8981\u6c42\u5e8f\u5217\u5316\u7aef\u548c\u53cd\u5e8f\u5217\u5316\u7aef\u5fc5\u987b\u4fdd\u6301\u4e00\u81f4\uff0c\u53ef\u4ee5\u5b58\u5728\u6570\u636e\u5dee\u5f02\uff0c\u4f46\u662f\u4e0d\u80fd\u51fa\u73b0\u6570\u636e\u65ad\u5c42\u3002")),(0,a.kt)("h2",{id:"\u4e09\u4f7f\u7528"},"\u4e09\u3001\u4f7f\u7528"),(0,a.kt)("p",null,"\u3010\u5b9e\u4f53\u7c7b\u3011"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-csharp"},"class MyClass : IPackage\n{\n public int P1 { get; set; }\n public string P2 { get; set; }\n public char P3 { get; set; }\n public double P4 { get; set; }\n public List P5 { get; set; }\n public Dictionary P6 { get; set; }\n public void Package(ByteBlock byteBlock)\n {\n //\u57fa\u7840\u7c7b\u578b\u76f4\u63a5\u5199\u5165\u3002\n byteBlock.Write(P1);\n byteBlock.Write(P2);\n byteBlock.Write(P3);\n byteBlock.Write(P4);\n\n //\u96c6\u5408\u7c7b\u578b\uff0c\u53ef\u4ee5\u5148\u5224\u65ad\u662f\u5426\u4e3anull\n byteBlock.WriteIsNull(P5);\n if (P5 != null)\n {\n //\u5982\u679c\u4e0d\u4e3anull\n //\u5c31\u5148\u5199\u5165\u96c6\u5408\u957f\u5ea6\n //\u7136\u540e\u904d\u5386\u5c06\u6bcf\u4e2a\u9879\u5199\u5165\n byteBlock.Write(P5.Count);\n foreach (var item in P5)\n {\n byteBlock.Write(item);\n }\n }\n\n //\u5b57\u5178\u7c7b\u578b\uff0c\u53ef\u4ee5\u5148\u5224\u65ad\u662f\u5426\u4e3anull\n byteBlock.WriteIsNull(P6);\n if (P6 != null)\n {\n //\u5982\u679c\u4e0d\u4e3anull\n //\u5c31\u5148\u5199\u5165\u5b57\u5178\u957f\u5ea6\n //\u7136\u540e\u904d\u5386\u5c06\u6bcf\u4e2a\u9879\uff0c\u6309\u952e\u3001\u503c\u5199\u5165\n byteBlock.Write(P6.Count);\n foreach (var item in P6)\n {\n byteBlock.Write(item.Key);\n byteBlock.WritePackage(item.Value);//\u56e0\u4e3a\u503cMyClassModel\u5b9e\u73b0\u4e86IPackage\uff0c\u6240\u4ee5\u53ef\u4ee5\u76f4\u63a5\u5199\u5165\n }\n }\n }\n\n public void Unpackage(ByteBlock byteBlock)\n {\n //\u57fa\u7840\u7c7b\u578b\u6309\u5e8f\u8bfb\u53d6\u3002\n this.P1 = byteBlock.ReadInt32();\n this.P2 = byteBlock.ReadString();\n this.P3 = byteBlock.ReadChar();\n this.P4 = byteBlock.ReadDouble();\n\n var isNull = byteBlock.ReadIsNull();\n if (!isNull)\n {\n int count = byteBlock.ReadInt32();\n var list = new List(count);\n for (int i = 0; i < count; i++)\n {\n list.Add(byteBlock.ReadInt32());\n }\n this.P5 = list;\n }\n\n\n isNull = byteBlock.ReadIsNull();//\u590d\u7528\u524d\u9762\u7684\u53d8\u91cf\uff0c\u7701\u7684\u91cd\u65b0\u58f0\u660e\n if (!isNull)\n {\n int count = byteBlock.ReadInt32();\n var dic = new Dictionary(count);\n for (int i = 0; i < count; i++)\n {\n dic.Add(byteBlock.ReadInt32(), byteBlock.ReadPackage());\n }\n this.P6 = dic;\n }\n }\n}\n\nclass MyClassModel : PackageBase\n{\n public DateTime P1 { get; set; }\n public override void Package(ByteBlock byteBlock)\n {\n byteBlock.Write(P1);\n }\n\n public override void Unpackage(ByteBlock byteBlock)\n {\n this.P1 = byteBlock.ReadDateTime();\n }\n}\n")),(0,a.kt)("p",null,"\u3010\u6253\u5305\u548c\u89e3\u5305\u3011"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-csharp"},"var myClass = new MyClass();\nmyClass.P1 = 1;\nmyClass.P2 = \"\u82e5\u6c5d\u68cb\u8317\";\nmyClass.P3 = 'a';\nmyClass.P4= 3;\n\nmyClass.P5=new List { 1, 2, 3 };\n\nmyClass.P6= new Dictionary() \n{\n { 1,new MyClassModel(){ P1=DateTime.Now} },\n { 2,new MyClassModel(){ P1=DateTime.Now} }\n};\n\nusing (ByteBlock byteBlock=new ByteBlock())\n{\n myClass.Package(byteBlock);//\u6253\u5305\uff0c\u76f8\u5f53\u4e8e\u5e8f\u5217\u5316\n\n byteBlock.Seek(0);//\u5c06\u6d41\u4f4d\u7f6e\u91cd\u7f6e\u4e3a0\n\n var myNewClass = new MyClass();\n myNewClass.Unpackage(byteBlock);//\u89e3\u5305\uff0c\u76f8\u5f53\u4e8e\u53cd\u5e8f\u5217\u5316\n}\n")),(0,a.kt)("h2",{id:"\u56db\u6027\u80fd\u8bc4\u6d4b"},"\u56db\u3001\u6027\u80fd\u8bc4\u6d4b"),(0,a.kt)("p",null,"\u57fa\u51c6\u6d4b\u8bd5\u8868\u660e\uff1a"),(0,a.kt)("p",null,"\u5305\u5e8f\u5217\u5316\u6a21\u5f0f\u548c\u4f7f\u7528\u6e90\u4ee3\u7801\u751f\u6210\u65b9\u5f0f\u5de5\u4f5c\u7684MemoryPack\u51e0\u4e4e\u4e00\u6837\u3002\u6bd4json\u65b9\u5f0f\u5feb\u4e8610\u500d\u591a\uff0c\u6bd4\u5fae\u8f6f\u7684json\u5feb\u4e86\u8fd14\u500d\u3002"),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(9676).Z,width:"1176",height:"275"})))}p.isMDXComponent=!0},9676:(e,t,n)=>{n.d(t,{Z:()=>l});const l=n.p+"assets/images/ipackage-1-2f48a97c1a2568b875aab9b5a51de765.png"}}]);