是否可以使用字典中的CSVHelpers读取和写入CSV文件?
下面是我写的代码片段:
using var writer = new StreamWriter(_filePath);
using var csv = new CsvWriter(writer, CultureInfo.InvariantCulture);
if (_classMap != null)
{
csv.Context.RegisterClassMap(_classMap);
}
csv.WriteHeader(typeof(Dictionary<TKey, TValue>));
csv.NextRecord();
foreach (var value in _store)
{
csv.WriteRecord(new KeyValuePair<TKey,TValue>(value.Key,value.Value));
csv.NextRecord();
}
字符串
下面是我读到的代码片段:
using var reader = new StreamReader(_filePath);
using var csv = new CsvReader(reader, CultureInfo.InvariantCulture);
_ = csv.Read();
_ = csv.ReadHeader();
if (_classMap != null)
{
csv.Context.RegisterClassMap(_classMap);
}
while (csv.Read())
{
var key = csv.GetField<TKey>(0);
var value = csv.GetRecord<TValue>();
_store[key] = value;
}
型Dictionary
的形状是<int,Sequence>
类型,其中Sequence对象看起来像:
public class Sequence
{
public int SequenceId { get; set; }
public int NextId { get; set; }
}
型
我尝试了几种不同的方法来实现它,但每次都得到以下异常:
System.MissingMethodException: Constructor 'CsvHelper.Configuration.DefaultClassMap`1[[System.Collections.Generic.KeyValuePair`2[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0
9],[FourDBS.SmartMeter.Common.Managers.Sequence, Four.DBS.Meadow.SmartMeter.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]()'
型
2条答案
按热度按时间uqcuzwp81#
你很接近了你只需要写出字典id,然后写出
Sequence
值。阅读也是一样。使用GetField<int>("DictionaryId")
和GetRecord<Sequence>()
。如果你想改变Sequence
的编写方式,你可以使用ClassMap<Sequence>
。字符串
m0rkklqb2#
为什么不为序列化/反序列化过程创建一个特定的类型呢?
字符串
阅读:
型