CsvHelper ClassMap 构造函数参数,使用 Reference<>

问题描述 投票:0回答:1

我有以下 ClassMap:

internal sealed class MyOuterMap : ClassMap<MyOuterClass>
{
    public MyOuterMap()
    {
        References<MyInnerMap>(x => x.MyInnerClassProperty);
    }
}

internal sealed class MyInnerMap : ClassMap<MyInnerClass>
{
    public MyInnerMap(string p1, int p2)
    {
    }
}

客户端代码是:

using var csvReader = new CsvReader(streamReader, config);
csvReader.Context.RegisterClassMap(new MyInnerMap("hello", 42));
csv.Context.RegisterClassMap<MatchMap>();

收到错误消息:

System.MissingMethodException:“构造函数”InnerMap()”不是 找到了。”

我确实理解该消息,并且也理解 CsvHelper 尝试实例化 MyInnerMap 的新实例。问题是为什么 CsvHelper 不使用我注册的实例?

c# .net-core csvhelper
1个回答
0
投票

当您使用特定参数创建

MyInnerMap
的实例并将其注册到
CsvHelper
时:

csvReader.Context.RegisterClassMap(new MyInnerMap("hello", 42));

CsvHelper
不使用此特定实例来处理其映射操作。相反,它会在需要时在内部创建自己的实例,通常使用无参数构造函数。
CsvHelper
不直接利用您手动实例化的实例来进行映射操作。

© www.soinside.com 2019 - 2024. All rights reserved.