4

我想在我的 CSV 输出中包含来自子类的值。子类包含几个指示可用操作的布尔值。

public class AllowedActions {
    public bool CanCheckIn { get; set; }
    public bool CanCheckOut { get; set; }
}

public class ContentItem {
    public AllowedActions Actions { get; set; }
    public Guid? ContentTypeId { get; set; }
}

我可以创建一个包含 ContentItem 属性和 AllowedAction 类的值的类映射吗?将它们添加到地图会导致“未为类型 'XYZ.ContentItem' 定义属性 'Boolean CanCheckIn'”错误。

这不起作用:

        Map(m => m.Actions.CanCheckIn);
        Map(m => m.Actions.CanCheckOut);
4

1 回答 1

6

我想到了。为了正确映射子类的成员,我需要使用References而不是Map,并提供一个单独的映射对象,如下所示:

        References<AllowedActionsClassMap>(m => m.Actions);

...

public sealed class AllowedActionsClassMap: CsvClassMap<AllowedActions>
{
    public AllowedActionsClassMap()
    {
        Map(m => m.CanCheckIn);
        Map(m => m.CanCheckOut);
    }
}

此处的更多信息:CsvHelper 映射

于 2014-06-10T17:19:26.500 回答