CsvHelper ConvertUsing not changing output

前端 未结 2 723
轮回少年
轮回少年 2021-01-02 03:07

I\'m trying to use the ConvertUsing method of the CsvHelper library (v 2.4.0).

I\'ve read the documentation about ConvertUsing but can\'t get it to work

相关标签:
2条回答
  • 2021-01-02 03:46

    I had a similar need and this is what I made in order to modify the content before saving it into a csv file.

    I have a custom class called StringNormalizer that implements CsvHelper.TypeConversion.ITypeConverter interface.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using CsvHelper.TypeConversion;
    
    namespace MyNamespaceInHere {    
        public class StringNormalizer : ITypeConverter {
            public bool CanConvertFrom(Type type) {
                if (type == typeof(string)) return true;
                return false;
            }
            public bool CanConvertTo(Type type) {
                if (type == typeof(string)) return true;
                return false;
            }
            public object ConvertFromString(TypeConverterOptions options, string text) { return normalize(text); }
            public string ConvertToString(TypeConverterOptions options, object value) {
                if (value == null) return string.Empty;
                if (value.GetType() == typeof(string)) {
                    string str = (string)value;
                    return normalize(str);
                }
                return string.Empty;
            }
            public string normalize(string field) {
                // Do stuff in here and return normalized string
                return field + " just a sample";
            }
        }
    }
    

    Then in my main program where I have defined mappings I use it like this

    public sealed class ConMap : CsvClassMap<Contact> {        
            public override void CreateMap() {
                Map(m => m.FirstName).Name("FirstName").TypeConverter<StringNormalizer>();
            }
        }
    

    And thus all that is saved to csv are "run through" my string normalizer.

    0 讨论(0)
  • 2021-01-02 03:53

    Currently ConvertUsing is only used when reading.

    You can use a custom type converter if you want to customize the output. You also have some limited abilities through the type converter options.

    0 讨论(0)
提交回复
热议问题