2014-06-09 35 views
2

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

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类的价值?将它们添加到映射会导致“属性”布尔CanCheckIn'未定义为类型'XYZ.ContentItem'“错误。

这不起作用:

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

回答

5

我想通了。为了孩子类的成员正确映射,我需要使用References而非Map,并提供一个单独的地图对象,像这样:

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

... 

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

点击此处了解详情:CsvHelper Mapping