public IRendering Render(object source, IRenderingEngine engine = null) { switch (source) { case IList sequence: var sourceType = RendererUtilities.GetSequenceElementTypeOrKeyValuePairValueType(sequence); var accessors = RendererUtilities.GetAccessors(sourceType).ToList(); var keyValueList = sequence.OfType <object>() .Select((v, i) => new KeyValuePair <object, object>(i, v)); var headers = RendererUtilities.CreateTableHeaders(accessors, true); var rows = RendererUtilities.CreateTableRowsFromValues(accessors, keyValueList, engine); var table = $@"<table> {headers} {rows} </table>"; return(new HtmlRendering(table)); default: throw new ArgumentOutOfRangeException($"Sequence type {source.GetType()} not supported "); } }
public IRendering Render(object source, IRenderingEngine engine = null) { if (source == null) { throw new ArgumentNullException(nameof(source)); } switch (source) { case IEnumerable sequence: var sourceType = RendererUtilities.GetSequenceElementTypeOrKeyValuePairValueType(sequence); var accessors = RendererUtilities.GetAccessors(sourceType).ToList(); var headers = RendererUtilities.CreateTableHeaders(accessors, false); var rows = RendererUtilities.CreateTableRowsFromValues(accessors, sequence, engine); var table = $@"<table> {headers} {rows} </table>"; return(new HtmlRendering(table)); default: throw new ArgumentOutOfRangeException($"Sequence type {source.GetType()} not supported "); } }