C# 枚举未使用CSVHelper序列化?

C# 枚举未使用CSVHelper序列化?,c#,enums,csvhelper,C#,Enums,Csvhelper,我刚开始使用CSVHelper,它看起来很有前途。但是,我不知道如何最好地处理那些显然没有立即序列化的枚举 我有很多类似下面的课程。它们都包含不同的枚举,理想情况下可以使用名称序列化这些枚举 [DataContract(IsReference = true)] public class Setting1 : LibraryComponent { [DataMember] public InfiltrationModel InfiltrationM

我刚开始使用CSVHelper,它看起来很有前途。但是,我不知道如何最好地处理那些显然没有立即序列化的枚举

我有很多类似下面的课程。它们都包含不同的枚举,理想情况下可以使用名称序列化这些枚举

 [DataContract(IsReference = true)]
    public class Setting1 : LibraryComponent
    {
        [DataMember]
        public InfiltrationModel InfiltrationModel = InfiltrationModel.Constant;
        [DataMember]
        public double InfiltrationAch { get; set; } = 0.1;
    }
 [DataContract(IsReference = true)]
    public class Setting2 : LibraryComponent
    {
        [DataMember]
        public EconomizerItem EconomizerType { get; set; } = EconomizerItem.NoEconomizer;
        [DataMember]
        public double HeatRecoveryEfficiencyLatent { get; set; } = 0.65;
    }
然后我使用模板函数来读取和写入所有内容。我希望有一种方法可以保持这种通用性,这样我就不必为每个类编写自定义的读写例程

public void writeLibCSV<T>(string fp, List<T> records)
        {
            using (var sw = new StreamWriter(fp))
            {
                var csv = new CsvWriter(sw);
                csv.WriteRecords(records);
            }
        }
        public List<T> readLibCSV<T>(string fp)
        {
            var records = new List<T>();
            using (var sr = new StreamReader(fp))
            {
                var csv = new CsvReader(sr);
                records = csv.GetRecords<T>().ToList();
            }
            return records;
        }

我曾尝试使用csv.WriteField(“节约型”)手动读取写入字段;但这相当麻烦。是否有人建议我如何使CSVHelper默认输出枚举?如果我没有误读CSVHelper上的changelog,那么从1.13版开始,它就应该内置enum转换器?

这是因为渗透模型是公共字段而不是属性吗?Setting2序列化是否正常?看起来它几乎是的副本,但不同之处在于此问题询问如何使用名称而不是值进行序列化。虽然可能是一个非常相似的答案,但这可能已经足够不同了,因此不应将其作为dupe.yup关闭-将其更改为具有{get;set;}的属性就可以实现此目的。。。
 writeLibCSV<Setting1>(@"C:\Temp\Setting1.csv", lib.Setting1.ToList());
 List<Setting1> in = readLibCSV<Setting1>(@"C:\Temp\Setting1.csv");
InfiltrationAch
0.1