νμ μμ κ°μΌλ‘ μΆλ ₯ ν΄λμ€μ ν νλλ₯Ό μ±μ°λ 맡μ μμ±νλ €κ³ ν©λλ€. κ·Έλ¬λ λλ ν μ μμ΅λλ€. λ€μ΄μ€λ csv νμΌμ νλκ° μλ κ²½μ°μλ§ μλν©λλ€.
μ¬κΈ° λ΄κ° νκ³ μΆμ κ²μ λν ν μ€νΈκ° μμ΅λλ€. (ConstantTests.csμ μΆκ° ν μ€νΈ)
[TestMethod]
public void ConstantNoFieldTest()
{
var rows = new Queue<string[]>();
rows.Enqueue(new[] { "Id"});
rows.Enqueue(new[] { "1"});
rows.Enqueue(new[] { "2"});
rows.Enqueue(null);
var parser = new ParserMock(rows);
var csv = new CsvReader(parser);
csv.Configuration.RegisterClassMap<TestStringMap>();
var records = csv.GetRecords<Test>().ToList();
csv.Configuration.MissingFieldFound = null;
Assert.AreEqual(1, records[0].Id);
Assert.AreEqual("constant", records[0].Name);
Assert.AreEqual(2, records[1].Id);
Assert.AreEqual("constant", records[1].Name);
}
(μ°Έκ³ λ‘ TestStringMapμ λ€μκ³Ό κ°μ΅λλ€.
private sealed class TestStringMap : ClassMap<Test>
{
public TestStringMap()
{
Map( m => m.Id );
Map( m => m.Name ).Constant( "constant" );
}
}
)
λ΄κ° μ μ΄ μΌμ νκ³ μΆμκ°? μ¬μ©μκ° μννΈμ¨μ΄μμ μμ μ 맀νμ μ μν λ€μ λ°μ΄ν°λ² μ΄μ€μ μ μ₯νμ¬ μμ μ CSV νμΌ νμμ μ¬μ©ν μ μλλ‘ ν©λλ€. λλ‘λ νμΌ νμμ λͺ¨λ νλκ° μλ κ²½μ°κ° μμ΅λλ€. μ΄ κ²½μ° μ¬μ©μλ μμλ₯Ό μ λ ₯νλ €κ³ νλ©° ν΄λΉ νλλ λ€μ΄μ€λ CSV νμΌμ μμ΅λλ€.
λλ μ΄κ²μ κΈ°λ₯ μμ²μΌλ‘ λ£μ κ²μ λλ€. μμ±ν λ μμ±μ μ§μ ν νμλ μμΌλ©° μλν©λλ€. λλ μ΄κ²μ΄ λ¨μ§ μ€μ μΌ μ μλ€κ³ μκ°ν©λλ€.
μ§κΈμ μ΄ μμ μ μνν μ μμ΅λλ€.
Map(m => m.Name).ConvertUsing((IReaderRow row) => "the constant");
ν₯λ―Έλ‘κ²λ MemeberMap.Constant()
λ κΈ°λ³Έ 맀νμ΄ μΈλ±μ€ κΈ°λ°μΈ κ²½μ° μλν©λλ€. μ¦, csv.Configuration.HasHeaderRecord = false
λ₯Ό μ¬μ©νμ¬ λ§€νμ΄ μμμ λλ λͺ
μμ μΌλ‘ μΈλ±μ€μ μν΄ μνλ©λλ€.
ν΅κ³Ό ν μ€νΈ(μμ κ°μ΄ Reading\ConstantTests.csμ κ²½μ°):
[TestMethod]
public void ConstantNoFieldIndexMapTest()
{
var rows = new Queue<string[]>();
rows.Enqueue(new[] { "1" });
rows.Enqueue(new[] { "2" });
rows.Enqueue(null);
var parser = new ParserMock(rows);
var csv = new CsvReader(parser);
csv.Configuration.RegisterClassMap<TestStringMap>(); // implicit index-map without Header
csv.Configuration.HasHeaderRecord = false;
var records = csv.GetRecords<Test>().ToList();
Assert.AreEqual(1, records[0].Id);
Assert.AreEqual("constant", records[0].Name);
Assert.AreEqual(2, records[1].Id);
Assert.AreEqual("constant", records[1].Name);
}
CSVλ₯Ό POCOμ 맀ννκ³ νλ μ½λ©λ νλλ₯Ό μΆκ°νλ €κ³ ν λ μ€λ μ΄ λ²κ·Έλ₯Ό λ°κ²¬νμ΅λλ€. λμ€μ ν μλ μμ§λ§ λ€λ₯Έ λͺ¨λ μμ±μ΄ μ€μ λλ μμ§λ ¬ν μμ μμ νλ κ²μ΄ λ κΉλν΄ λ³΄μμ΅λλ€. #1252κ° μ€λ¨λ λΆλΆλΆν° λ€μ μμνκ² μ΅λλ€.
μ΄λ€ κ°μ Έμ€κΈ° νμΌμ΄ λ μ½λλ₯Ό μμ±νλμ§ μλ³νκΈ° μν΄ κ°μ Έμ¬ λ κ° λ μ½λμ Guid FileIdλ₯Ό μΆκ°νκΈ° μν΄ μ€λ μ΄ κΈ°λ₯μ΄ νμνμ΅λλ€. λ§μ λ°μ΄ν°λ₯Ό λ€λ£¨λ―λ‘ λ μ½λλ₯Ό λμ΄νμ¬ μμ νλ κ²μ λ°λμ§νμ§ μμ΅λλ€.
μ΄ ν΄κ²° λ°©λ²μ μ¬μ©νμ΅λλ€.
Map(m => m.FileId).ConvertUsing(row => myGuid);
κ°μ₯ μ μ©ν λκΈ
λλ μ΄κ²μ κΈ°λ₯ μμ²μΌλ‘ λ£μ κ²μ λλ€. μμ±ν λ μμ±μ μ§μ ν νμλ μμΌλ©° μλν©λλ€. λλ μ΄κ²μ΄ λ¨μ§ μ€μ μΌ μ μλ€κ³ μκ°ν©λλ€.
μ§κΈμ μ΄ μμ μ μνν μ μμ΅λλ€.