public ObjectEncoder(IReadOnlyList <Column> children, Grpc.ColumnMetadata metadata) { this.columnId = metadata.ColumnId; encoders = new IEncoder[children.Count]; propertyGetters = new Func <object, object> [children.Count]; for (int i = 0; i < children.Count; i++) { encoders[i] = EncoderHelper.GetEncoder(children[i].Type, metadata.SubColumns[i], children[i].Children); propertyGetters[i] = children[i].GetFunction; } }
private Grpc.ColumnMetadata ToMetadata(ref int index, Column column) { Grpc.ColumnMetadata columnMetadata = new Grpc.ColumnMetadata() { Type = MetadataHelper.GetKoraliumType(column.Type), ColumnId = index++, Name = column.Name }; foreach (var child in column.Children) { columnMetadata.SubColumns.Add(ToMetadata(ref index, child)); } return(columnMetadata); }