Использование AutoMapper для сопоставления IList to (Iesi.Collections.Generic) ISet

Я пытался решить эту проблему в течение дня, но у меня ничего не получилось, поэтому я надеюсь, что кто-то, возможно, уже решил эту проблему раньше. Ближе всего к решению я нашел Как просто сопоставить NHibernate ISet с IList с помощью AutoMapper и Сопоставить IList с ICollection через AutoMapper , но все равно без радости.

У меня есть данные. объект, который выглядит так:

public class Parent
{
   public virtual ISet Children  {get; set; }
}

И бизнес-объект, который выглядит так:

public class ParentDto
{
   public IList Children  {get; set; }
}

Использование AutoMapper для сопоставления из данных в бизнес работает нормально:

...
Mapper.CreateMap();
Mapper.CreateMap();
...

ParentDto destination = CWMapper.Map(source);

Но когда я перехожу к преобразованию из бизнеса в данные, я получаю сообщение об ошибке:

...
Mapper.CreateMap();
Mapper.CreateMap();
...

Parent destination = CWMapper.Map(source);

Невозможно преобразовать объект типа 'System.Collections.Generic.List' в '' Iesi.Collections.Generic.ISet '

Я добавил настраиваемое сопоставление:

Mapper.CreateMap()
      .ForMember(m => m.Children, o => o.MapFrom(s => ToISet(s.Children)));

private static ISet ToISet(IEnumerable list)
    {
        Iesi.Collections.Generic.ISet set = null;

        if (list != null)
        {
            set = new Iesi.Collections.Generic.HashedSet();

            foreach (T item in list)
            {
                set.Add(item);
            }
        }

        return set;
    }

Но я все равно получаю ту же ошибку. Приветствуем любую помощь!

8
задан Community 23 May 2017 в 12:06
поделиться