我正在尝试将单个对象映射到一个字段,该字段是使用automapper对象的ICollection,示例布局就是这样......
public class BarDto {
public int id {get;set;}
public int name {get;set;}
public ICollection<ExampleObject> FooCollection {get;set;}
}
public class Bar {
public int id {get;set;}
public int name {get;set;}
public ExampleObject Foo {get;set;}
}
Mapper.CreateMap<BarDto, Bar>()
.ForMember(dest => dest.FooCollection, opts => opts.MapFrom(src => src.Foo));
无论如何将src.foo转换为列表等以接受为ICollection?
答案 0 :(得分:3)
您可以执行以下操作:
Mapper.CreateMap<Bar, BarDto>()
.ForMember(dest => dest.FooCollection, opts => opts.MapFrom(src => new List<ExampleObject>() { src.Foo } ));
或者您可以实现自己的ValueResolver<ExampleObject, List<ExampleObject>>
并执行以下操作:
public class ExampleResolver: ValueResolver<ExampleObject, List<ExampleObject>>
{
protected override List<ExampleObject> ResolveCore(ExampleObject source)
{
return new List<ExampleObject>() { source };
}
}
然后:
Mapper.CreateMap<BarDto, Bar>()
.ForMember(dest => dest.FooCollection, opts => opts.ResolveUsing<ExampleResolver>());
第二种方法通常用于更复杂的情况,但您可以选择任何您想要的方法。
希望,这有帮助。