Csvhelper: 独自のClassMapコンストラクター定義にパラメーターを挿入するための最良の方法

作成日 2017年06月13日  ·  6コメント  ·  ソース: JoshClose/CsvHelper

`` `` c#
パブリックシールクラスMyClassMapWithParametrizationNeeded:CsvClassMap{{
// CsvHelperがクラスマップの構築インジェクションをサポートしているかどうかわかりません
//クラスマップをパラメータ化可能にする最良の方法は何ですか?
MyClassMapWithParametrizationNeeded(ClassMapDependencyParamter param){

}
}

`` ``

最も参考になるコメント

void Main()
{
    using (var stream = new MemoryStream())
    using (var writer = new StreamWriter(stream))
    using (var reader = new StreamReader(stream))
    using (var csv = new CsvReader(reader))
    {
        writer.WriteLine("Id,Name");
        writer.WriteLine("1,one");
        writer.WriteLine(",");
        writer.WriteLine("2,two");
        writer.Flush();
        stream.Position = 0;

        var map = new TestMap(-1, "n/a");
        csv.Configuration.RegisterClassMap(map);
        csv.GetRecords<Test>().ToList().Dump();
    }
}

public class Test
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public sealed class TestMap : ClassMap<Test>
{
    public TestMap(int id, string name)
    {
        Map(m => m.Id).Default(id);
        Map(m => m.Name).Default(name);
    }
}

全てのコメント6件

あなたはそれをすることができるはずです。 問題は何ですか?

こんにちはジョシュ、
このメッセージがあなたをうまく見つけてくれることを願っています、あなたはたまたまこの質問の例を持っていますか?
パラメータを定義してマップクラスのコンストラクタを使用するようにcsvヘルパーに指示する方法を知りたいです。

ありがとう
ロケシュバル

void Main()
{
    using (var stream = new MemoryStream())
    using (var writer = new StreamWriter(stream))
    using (var reader = new StreamReader(stream))
    using (var csv = new CsvReader(reader))
    {
        writer.WriteLine("Id,Name");
        writer.WriteLine("1,one");
        writer.WriteLine(",");
        writer.WriteLine("2,two");
        writer.Flush();
        stream.Position = 0;

        var map = new TestMap(-1, "n/a");
        csv.Configuration.RegisterClassMap(map);
        csv.GetRecords<Test>().ToList().Dump();
    }
}

public class Test
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public sealed class TestMap : ClassMap<Test>
{
    public TestMap(int id, string name)
    {
        Map(m => m.Id).Default(id);
        Map(m => m.Name).Default(name);
    }
}

こんにちはジョシュ、

迅速な返信をありがとうございます。コンストラクターパラメーターを行に書き込み、どのプロパティにもマップせず、CSVファイルの読み取り中に無視する方法はありますか。

よろしくお願いします
ロケシュバル

いいえ、でも手動でできると思います。 パラメータのプロパティを追加し、書き込むときに、コメント行などにそれらのプロパティを書き出します。

@JoshClose testmap存在する参照マッピングのコンストラクターパラメーターを渡す方法

このページは役に立ちましたか?
0 / 5 - 0 評価