// Copyright 2009-2022 Josh Close // This file is a part of CsvHelper and is dual licensed under MS-PL and Apache 2.0. // See LICENSE.txt for details or visit http://www.opensource.org/licenses/ms-pl.html for MS-PL and http://opensource.org/licenses/Apache-2.0 for Apache 2.0. // https://github.com/JoshClose/CsvHelper using System.Collections; using CsvHelper.Configuration; namespace CsvHelper.TypeConversion { /// /// Throws an exception when used. This is here so that it's apparent /// that there is no support for type conversion. A custom /// converter will need to be created to have a field convert to and /// from an IEnumerable. /// public class EnumerableConverter : DefaultTypeConverter { /// /// Throws an exception. /// /// The string to convert to an object. /// The for the current record. /// The for the member being created. /// The object created from the string. public override object? ConvertFromString(string? text, IReaderRow row, MemberMapData memberMapData) { var message = "Converting IEnumerable types is not supported for a single field. " + "If you want to do this, create your own ITypeConverter and register " + "it in the TypeConverterFactory by calling AddConverter."; throw new TypeConverterException(this, memberMapData, text, row.Context, message); } /// /// Throws an exception. /// /// The object to convert to a string. /// The for the current record. /// The for the member being written. /// The string representation of the object. public override string? ConvertToString(object? value, IWriterRow row, MemberMapData memberMapData) { var message = "Converting IEnumerable types is not supported for a single field. " + "If you want to do this, create your own ITypeConverter and register " + "it in the TypeConverterFactory by calling AddConverter."; throw new TypeConverterException(this, memberMapData, value, row.Context, message); } } }