Я прочитал множество других постов и, похоже, не могу понять, что происходит, поэтому пришло время для какой-то помощи.
Я пытаюсь сопоставить свои доменные объекты, которые содержат коллекции, с dtos, также содержащим коллекции.
Вот примитивный пример; (заранее извиняюсь за стену кода, я старался сделать ее как можно короче):
Сущность
public class Foo
{
public Foo()
{
Bars = new List<Bar>();
}
public string Foo1 { get; set; }
public ICollection<Bar> Bars { get; set; }
}
public class Bar
{
public string Bar1 { get; set; }
}
DTOS
public class FooDto
{
public FooDto()
{
Bars = new List<BarDto>();
}
public string Foo1 { get; set; }
public IEnumerable<BarDto> Bars { get; set; }
}
public class BarDto
{
public string Bar1 { get; set; }
}
Карты
Mapper.CreateMap<Foo, FooDto>();
Mapper.CreateMap<ICollection<Bar>, IEnumerable<BarDto>>();
Тесты
// Arrange
var e = new Foo
{
Foo1 = "FooValue1",
Bars = new List<Bar>
{
new Bar
{
Bar1 = "Bar1Value1"
},
new Bar
{
Bar1 = "Bar2Value1"
}
}
};
// Act
var o = Mapper.Map<Foo, FooDto>(e);
// Assert
Mapper.AssertConfigurationIsValid();
Assert.AreEqual(e.Foo1, o.Foo1);
Assert.IsNotNull(o.Bars);
Assert.AreEqual(2, o.Bars.Count());
Я не получаю никаких ошибок конфигурации, и Foo1 очень хорошо отображает.
o.Bars - это Castle.Core.Interceptor.IInterceptor[]
и не содержит значений из моего доменного объекта ...
Что мне здесь не хватает?