CsvHelper更新,派生DefaultTypeConverter

CsvHelper update, deriving DefaultTypeConverter

最近我将 CsvHelper 从 v2 更新到 v15,以下代码不再有效:

public class DateConverter : DefaultTypeConverter
    {
        public override string ConvertToString(TypeConverterOptions options, object value)
        {
            return ((DateTime)value).ToString("dd'/'MM'/'yyyy");
        }
    }

错误是:no suitable method found to override 但汇编中的 DefaultTypeConverter 是:

public class DefaultTypeConverter : ITypeConverter
{
    public DefaultTypeConverter();

    //
    // Summary:
    //     Converts the string to an object.
    //
    // Parameters:
    //   text:
    //     The string to convert to an object.
    //
    //   row:
    //     The CsvHelper.IReaderRow for the current record.
    //
    //   memberMapData:
    //     The CsvHelper.Configuration.MemberMapData for the member being created.
    //
    // Returns:
    //     The object created from the string.
    public virtual object ConvertFromString(string text, IReaderRow row, MemberMapData memberMapData);
    //
    // Summary:
    //     Converts the object to a string.
    //
    // Parameters:
    //   value:
    //     The object to convert to a string.
    //
    //   row:
    //     The CsvHelper.IWriterRow for the current record.
    //
    //   memberMapData:
    //     The CsvHelper.Configuration.MemberMapData for the member being written.
    //
    // Returns:
    //     The string representation of the object.
    public virtual string ConvertToString(object value, IWriterRow row, MemberMapData memberMapData);
}

我该如何克服这个问题?

您的覆盖签名与您正在扩展的 class 中的方法签名不匹配。这在 csvhelper

的版本之间有变化

您需要将当前的实现替换为:

public override string ConvertToString(object value, IWriterRow row, MemberMapData memberMapData)
{
    return ((DateTime)value).ToString("dd'/'MM'/'yyyy");
}

有关更多更改,您可以查看 CsV Helper on GitHub