Сериализация дочерних классов с помощью csvHelper

Я хотел бы включить значения из дочернего класса в свой вывод 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? Добавление их на карту вызывает ошибку «Свойство 'Boolean CanCheckIn' не определено для типа 'XYZ.ContentItem'».

Это не работает:

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

person jsuddsjr    schedule 09.06.2014    source источник


Ответы (1)


Я понял. Чтобы правильно сопоставить члены дочернего класса, мне нужно использовать 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

person jsuddsjr    schedule 10.06.2014