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 に答える