Как сопоставить вложенное свойство с типом интерфейса? - PullRequest
0 голосов
/ 01 октября 2018

Я использую AutoMapper, и у меня есть узлы и интерфейсы DTO.Узел DTO имеет коллекцию интерфейсов:

public class NodeDto
{
    public List<InterfaceDto> Interfaces { get; set; }
}

Затем я хочу сопоставить этот DTO с моделью следующим образом:

public interface IInterfaceCollection : IBaseCollection<IInterface>
{
    INode Node { get; }
}

public class InterfaceCollection : IInterfaceCollection
{

}

public class Interface : IInterface
{

}

public class Node : INode
{
    public IInterfaceCollection Interfaces { get; set; }
}

В коде регистрации приложения у меня есть:

CreateMap<NodeDto, INode>()
    .ConstructUsing(n => new Node())
    .ForMember(d => d.Interfaces, m => m.MapFrom(s => s.Interfaces));

CreateMap<InterfaceDto, IInterface>()
    .ConstructUsing(n => new Interface());

Но как сказать AutoMapper создать экземпляр узла со свойством Interfaces (InterfaceCollection), заполненным значениями из DTO?

Когда я запускаю приложение с этой настройкой, у меня появляется ошибка:

Невозможно привести объект типа 'System.Collections.Generic.List`1 [Models.Api.IInterface]' к типу 'Models.Api.IInterfaceCollection'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...