Reputation: 1
First,I create a class
public class CombatData
{
public int blackCatHealth;
public int blackCatAttack;
public int blackCatWinCount;
public int whiteCatWinCount;
public int blackCatDraw;
public CombatData(int bH,int bA,int bW,int wW,int bD)
{
blackCatHealth = bH;
blackCatAttack = bA;
blackCatWinCount = bW;
whiteCatWinCount = wW;
blackCatDraw = bD;
}
}
Then I try to write
var record = new CombatData(blackCat.heath, blackCat.attack, blackCat.winCount, whiteCat.winCount, blackCat.draw);
using (stream)
using (writer)
using (csv)
{
csv.WriteRecord(record);
csv.NextRecord();
}
But It gives me this
Unhandled exception. CsvHelper.WriterException: No properties are mapped for type 'CombatData'.
IWriter state:
Row: 1
Index: 0
HeaderRecord:
1
The tutorial I read did not mention mapping when it was written So I don't know what to do, just try the following
public sealed class CombatDataMap : ClassMap<CombatData>
{
public CombatDataMap()
{
Map(m => m.blackCatHealth).Index(0);
Map(m => m.blackCatAttack).Index(1);
Map(m => m.blackCatWinCount).Index(2);
Map(m => m.whiteCatWinCount).Index(3);
Map(m => m.blackCatDraw).Index(4);
}
}
var record = new CombatData(blackCat.heath, blackCat.attack, blackCat.winCount, whiteCat.winCount, blackCat.draw);
using (stream)
using (writer)
using (csv)
{
csv.Context.RegisterClassMap<CombatDataMap>();
csv.WriteRecord(record);
csv.NextRecord();
}
But still there is a problem
Unhandled exception. CsvHelper.WriterException: An unexpected error occurred.
IWriter state:
Row: 2
Index: 0
HeaderRecord:
2
---> System.ArgumentNullException: Value cannot be null. (Parameter 'destination')
I may be terribly wrong because I don't see anyone else having the same problem as me. I don't understand why a map is needed. Please help me.
Also my English is not good, this is the result of google translate, if there is a problem, I'm sorry
Upvotes: 0
Views: 626
Reputation: 9074
You just need to set the configuration to use Fields
instead of Properties
.
void Main()
{
var config = new CsvConfiguration(CultureInfo.InvariantCulture)
{
MemberTypes = CsvHelper.Configuration.MemberTypes.Fields
};
var record = new CombatData(1, 2, 3, 4, 5);
using (var csv = new CsvWriter(Console.Out, config))
{
csv.WriteRecord(record);
csv.NextRecord();
}
}
public class CombatData
{
public int blackCatHealth;
public int blackCatAttack;
public int blackCatWinCount;
public int whiteCatWinCount;
public int blackCatDraw;
public CombatData(int bH, int bA, int bW, int wW, int bD)
{
blackCatHealth = bH;
blackCatAttack = bA;
blackCatWinCount = bW;
whiteCatWinCount = wW;
blackCatDraw = bD;
}
}
Upvotes: 0