static string ConvertBackToGenericArgsString(string Tags) { if (TagToGenericArgsCache.TryGetValue(Tags, out var CachedResult)) { return(CachedResult); } var Args = Tags.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); var Result = new StringBuilder(); bool First = true; foreach (var Arg in Args) { if (First) { First = false; } else { Result.Append(','); } Result.Append('['); var Type = BondSerializationUtil.ParseTypeIdentifierString(Arg); Result.Append(Type.AssemblyQualifiedName); Result.Append(']'); } TagToGenericArgsCache.TryAdd(Tags, Result.ToString()); GenericArgsToTagCache.TryAdd(Result.ToString(), Tags); return(Result.ToString()); }
public static IGenericSerializable FromByteArray(ArraySegment <byte> Data) { if (Data.Count == 0) { return(null); } var Ref = (SerializationGenericReference)BondSerializer.Deserialize(typeof(SerializationGenericReference), new ArraySegmentReaderStream(Data)); var Type = BondSerializationUtil.ParseTypeIdentifierString(Ref.Type); return((IGenericSerializable)BondSerializer.Deserialize(Type, new MemoryStream(Ref.Data.ToArray()))); }