Я пытался решить эту проблему в течение дня, но у меня ничего не получилось, поэтому я надеюсь, что кто-то, возможно, уже решил эту проблему раньше. Ближе всего к решению я нашел Как просто сопоставить 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;
}
Но я все равно получаю ту же ошибку. Приветствуем любую помощь!