public void WriteArray(Type rType, bool bDynamic) { if (this.ReceiveGeneratedArrayType(rType, bDynamic)) { return; } var rTypeName = HotfixSerializerAssists.GetTypeName(rType); var rElementType = rType.GetElementType(); var rTDText = bDynamic ? "Dynamic" : string.Empty; var rTDEText = bDynamic && !HotfixSerializerAssists.IsBaseType(rElementType, false) ? "Dynamic" : string.Empty; this.WriteBraceCode(2, $"public static void Serialize{rTDText}(this BinaryWriter rWriter, {rTypeName} value)", "{", $@"var bValid = (null != value); rWriter.Serialize(bValid); if (!bValid) return; rWriter.Serialize(value.Length); for (int nIndex = 0; nIndex < value.Length; nIndex++) rWriter.Serialize{rTDEText}({(rElementType.IsEnum ? "(int)value[nIndex]" : "value[nIndex]")});", "}"); this.WriteBraceCode(2, $"public static {rTypeName} Deserialize(this BinaryReader rReader, {rTypeName} value)", "{", $@"var bValid = rReader.Deserialize(default(bool)); if (!bValid) return null; var nCount = rReader.Deserialize(default(int)); var rResult = new {rTypeName.Insert(rTypeName.IndexOf('[') + 1, "nCount")}; for (int nIndex = 0; nIndex < nCount; nIndex++) rResult[nIndex] = {(rElementType.IsEnum ? string.Format("({0})", rElementType.FullName) : string.Empty)}rReader.Deserialize{rTDEText}({HotfixSerializerAssists.GetDeserializeUnwrap(rElementType)}); return rResult;", "}"); }
public void WriteDictionary(Type rType, bool bDynamic) { if (this.ReceiveGeneratedDictionaryType(rType, bDynamic)) { return; } var rTypeName = HotfixSerializerAssists.GetTypeName(rType); var rKeyType = rType.GetGenericArguments()[0]; var rValueType = rType.GetGenericArguments()[1]; var rTDText = bDynamic ? "Dynamic" : string.Empty; var rTDKText = bDynamic && !HotfixSerializerAssists.IsBaseType(rKeyType, false) ? "Dynamic" : string.Empty; var rTDVText = bDynamic && !HotfixSerializerAssists.IsBaseType(rValueType, false) ? "Dynamic" : string.Empty; this.WriteBraceCode(2, $"public static void Serialize{rTDText}(this BinaryWriter rWriter, {rTypeName} value)", @"{", $@"var bValid = (null != value); rWriter.Serialize(bValid); if (!bValid) return; rWriter.Serialize(value.Count); {this.GenerateBraceCode(0, "foreach(var rPair in value)", " {", $@" rWriter.Serialize{rTDKText}({(rKeyType.IsEnum ? "(int)rPair.Key" : "rPair.Key")}); rWriter.Serialize{rTDVText}({(rValueType.IsEnum ? "(int)rPair.Value" : "rPair.Value")});", " }")}", "}"); this.WriteBraceCode(2, $"public static {rTypeName} Deserialize{rTDText}(this BinaryReader rReader, {rTypeName} value)", @"{", $@"var bValid = rReader.Deserialize(default(bool)); if (!bValid) return null; var nCount = rReader.Deserialize(default(int)); var rResult = new {rTypeName}(); {this.GenerateBraceCode(0, "for (int nIndex = 0; nIndex < nCount; ++ nIndex)", " {", $@" var rKey = {(rKeyType.IsEnum ? string.Format("({0})", rKeyType.FullName) : string.Empty)}rReader.Deserialize{rTDKText}({HotfixSerializerAssists.GetDeserializeUnwrap(rKeyType)}); var rValue = {(rValueType.IsEnum ? string.Format("({0})", rValueType.FullName) : string.Empty)}rReader.Deserialize{rTDVText}({HotfixSerializerAssists.GetDeserializeUnwrap(rValueType)}); rResult.Add(rKey, rValue);", " }")} return rResult;", "}"); }