如何使用FileHelpers创建用于编写csv文件的记录

时间:2010-01-07 17:14:21

标签: c# generics interface filehelpers

我正在使用Filehelpers从文件导入我的数据库。我现在正在处理反向过程,并且无法看到如何从我的数据对象创建记录。

我能找到的所有示例都显示来自文件 - >表 - >文件 我正在使用泛型转换接口。我在入站转换中使用了这个:

 public interface IConvertCSVRecordToType<T> where T : SimpleBase
  {
    T ConvertCSVRecordToType();
  }

并希望在出站时使用类似的内容:

 public interface IConvertTypeToCSVRecord<T> where T : SimpleBase, new()
  {
    void ConvertTypeToCSVRecord(T type);
  }

我使用此类来表示CSV记录:

  [DelimitedRecord(";"), IgnoreEmptyLines]
  public class CSVRecordFormat : IConvertCSVRecordToType<Material>, 
                                 IConvertTypeToCSVRecord<Material>

我在Filehelpers文档中遇到了TransformToRecordAttribute

  

TransformToRecordAttribute类

     

使用   您可以使用此属性标记方法   在RecordClass中是   负责将其转换为   指定。

有没有人有一个使用此属性的示例或如何创建记录集以使我朝着正确的方向前进的示例?

1 个答案:

答案 0 :(得分:0)

(粗略)使用了一些细节的代码:

 public class CSVTableExportProvider<TTable, TRecord>
        where TTable : SimpleBase, new()
        where TRecord : IConvertTypeToCSVRecord<TTable>, new()
 {
    public void ExportTable(string path, string filename, bool continueOnError)
    {
      var rows = _service.GetList<TTable>();
      var records = new List<TRecord>();

      var csvfile = Path.Combine(path, filename);

      var csvFile = new CSVFile<TRecord>(csvfile, continueOnError);

        foreach (var row in rows)
        {
          var rec = new TRecord();
          rec.ConvertTypeToCSVRecord(row);
          records.Add(rec);
        }
        csvFile.ConvertRecordsToFile(records.ToArray());
     }
 }

我从我的单元测试中调用:

 var provider = new CSVTableExportProvider<Material, MaterialCSVRecordFormat>();
 provider.ExportTable(foldername, filename, true);