3

我正在使用 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 中标记一个方法,该方法负责将其转换为指定的。

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

4

1 回答 1

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);
于 2010-01-08T18:43:36.677 回答