/// <summary> /// 发送 /// </summary> /// <typeparam name="T">配置类型</typeparam> /// <param name="list">配置列表</param> /// <param name="sendType">发送类型</param> /// <param name="initializedServer">初始化服务器</param> /// <returns>发送信息</returns> public static string Send <T>(List <T> list, int sendType = -1, gmt.Server initializedServer = null) where T : class, global::ProtoBuf.IExtensible { Type type = typeof(T); string[] name; if (!TableManager.tableNameDictionary.TryGetValue(type, out name)) { Log.AddLog(string.Format("错误表格的类型:", type.FullName)); return(TableManager.GetGMTText(901)); } string output = ""; if (sendType < 0) { if (!string.IsNullOrEmpty(name[2])) { sendType = int.Parse(name[2]); } } if (sendType >= 0) { byte[] versions = { (byte)DateTime.Now.Month, (byte)DateTime.Now.Day, (byte)DateTime.Now.Hour, (byte)DateTime.Now.Minute }; mw.AUTH_GMT_SETTINT_Ntf Ntf = new mw.AUTH_GMT_SETTINT_Ntf(); Ntf.type = (mw.EGMTSettintType)sendType; Ntf.verson = BitConverter.ToInt32(versions, 0); mw_serializer0 serializer = new mw_serializer0(); for (int i = 0; i < list.Count; ++i) { using (MemoryStream stream = new MemoryStream()) { serializer.Serialize(stream, list[i]); byte[] buffer = new byte[stream.Length]; stream.Position = 0; stream.Read(buffer, 0, buffer.Length); mw.AUTH_GMT_SETTINT_NODE node = new mw.AUTH_GMT_SETTINT_NODE(); node.len = buffer.Length; node.data = buffer; Ntf.info.Add(node); } } MemoryStream memoryStream = new MemoryStream(); ProtoSerializer.Instance.Serialize(memoryStream, Ntf); byte[] sendBuffer = new byte[memoryStream.Length]; memoryStream.Position = 0; memoryStream.Read(sendBuffer, 0, sendBuffer.Length); if (initializedServer != null) { output = TableManager.Send2Server(output, initializedServer, sendBuffer); } else { for (int i = 0; i < gmt.Server.Count; ++i) { output = TableManager.Send2Server(output, gmt.Server.GetServerAt(i), sendBuffer); } } } return(output); }