在Visual Studio 2015中出现了CsvClassMap未找到的错误。

7

我正在尝试在我的一个控制台应用程序中使用CsvHelper库。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CsvHelper;
using System.IO;
using Newtonsoft.Json;
using CsvHelper.TypeConversion;


namespace csvtest4
{
    class Program
    {
        static void Main(string[] args)
        {
            List<string> result = new List<string>();
            string value;
            using (TextReader fileReader = File.OpenText("list.csv"))
            {
                var csv = new CsvReader(fileReader);
                csv.Configuration.HasHeaderRecord = true;
                csv.Configuration.RegisterClassMap<CustomClassMap>();
                while (csv.Read())
                {
                    for (int i = 0; csv.TryGetField<string>(i, out value); i++)
                    {
                        result.Add(value);
                    }
                }

               var json = JsonConvert.SerializeObject(result);
                Console.WriteLine(json.ToString());
            }

        }

    }

    public class CustomClassMap : CsvClassMap<TestModel>
    {
        public CustomClassMap()
        {
            Map(m => m.StringProperty).Index(0);
            Map(m => m.GuidProperty).Index(1);
            Map(m => m.IntProperty).Index(2).TypeConverter<MyCustomTypeConverter>();
        }
    }
}

我不确定我错过了什么,但我的vs2015一直抱怨CsvClassMap,它说类型或命名空间未找到,你是否缺少指令。此外,它也无法识别map函数。

我认为我已经添加了必要的命名空间,因为其他CsvHelper函数都正常工作。

3个回答

31

CsvClassMap 已经不再是 CsvHelper 的最新版本中的一部分。

请使用 ClassMap<Model> 代替。


完全合格的名称是CsvHelper.Configuration.ClassMap - zett42

4

CsvClassMap位于CsvHelper.Configuration命名空间中。

如果您将光标放在CsvClassMap上并按下Ctrl+.,它应该会弹出一个菜单以解决缺失的引用。


2
CsvHelper 版本 20.0.0 将 RegisterClassMapConfiguration 对象移动到读取器/写入器的 Context 对象。
var Writer = new CsvWriter(...);
Writer.Context.RegisterClassMap<T>(mymap); // not in Configuration

参考:https://joshclose.github.io/CsvHelper/change-log/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接