ConcreteTypeConverter Explained
POCO DataSet uses a custom converter pattern named ConcreteTypeConverter to handle the serialization and deserialization of interfaces such as IDataSet, IDataTable, IDataRow, and IColumnMetadata. JSON serializers cannot directly instantiate interfaces, so the converter bridges the gap by mapping an interface type to a specific concrete implementation.
The converter is typically registered in JsonSerializerOptions as follows (conceptually):
jsonSerializerOptions.Converters.Add(new ConcreteTypeConverter<IDataSet, DataSet>());
jsonSerializerOptions.Converters.Add(new ConcreteTypeConverter<IDataTable, DataTable>());
jsonSerializerOptions.Converters.Add(new ConcreteTypeConverter<IDataRow, DataRow>());
jsonSerializerOptions.Converters.Add(new ConcreteTypeConverter<IColumnMetadata, ColumnMetadata>());
Table of Content POCO DataSet Serialization and Deserialization