gpt4 book ai didi

c# - Automapper:将类型对象上的单个成员映射到对象的 Icollection

转载 作者:行者123 更新时间:2023-11-30 16:03:03 25 4
gpt4 key购买 nike

我正在尝试将单个对象映射到一个字段,该字段是使用自动映射器的对象的 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 的方法?

最佳答案

您可以执行以下操作:

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>());

第二种方法通常用于更复杂的情况,但您可以选择任何您想要的方法。

希望对您有所帮助。

关于c# - Automapper:将类型对象上的单个成员映射到对象的 Icollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36940757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com