首页 > 解决方案 > 在 csvhelper 中仅注册 ReferencesMap 会导致错误

问题描述

我想创建一个唯一的 ReferencesMap 类。
CompositeMap持有对AMap和的引用BMap

打电话时

csv.Configuration.RegisterClassMap<CompositeMap>();

我收到一个错误:

No members were found in expression '{expression}'.

我的代码:

public class A
{
    public int ID { get; set; }
}

public class B
{
    public string Name { get; set; }
}

public sealed class AMap : ClassMap<A>
{
    public AMap()
    {
        Map(m => m.ID);
    }
}

public sealed class BMap : ClassMap<B>
{
    public BMap()
    {
        Map(m => m.Name);
    }
}


public class Composite
{
    public A a { get; set; }
    public B b { get; set; }
}

public sealed class CompositeMap : ClassMap<Composite>
{
    public CompositeMap()
    {
        References<AMap>(m => m.a);
        References<BMap>(m => m.b);
    }
}

知道为什么吗?我怎样才能做到这一点?

标签: c#csvhelper

解决方案


映射对象图的推荐方法是在顶部节点中进行所有映射。

public sealed class CompositeMap : ClassMap<Composite>
{
    public CompositeMap()
    {
        Map(m => m.a.ID);
        Map(m => m.b.Name);
    }
}

如果您有需要使用的特定原因References,请告诉我,我可以更新答案。


推荐阅读