我有以下dto对象:
public class PriceDto
{
public string Ticker {get; set;}
public double Open {get; set;}
public double Close {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
源对象:
public class RemoteData
{
public Security Security { get; set; }
public IList<Prices> Prices{ get; set; }
}
public class Security
{
public string Ticker {get; set;}
}
public class Prices
{
public double Open {get; set;}
public double Close {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
结果,我想获得PriceDto对象的集合.我知道如何绘制Ticker属性.但是,我不知道如何Prices正确映射:
CreateMap<RemoteData, PriceDto>()
.ForMember(d => d.Ticker, opt => opt.MapFrom(s => s.Security.Ticker));
Run Code Online (Sandbox Code Playgroud)
此外,Automapper无法找到配置,因为我有单身RemoteData,但我想得到IList<PriceDto>:
var json = await rangeUrl.GetJsonAsync<RemoteData>();
var dtos = _mapper.Map<IList<PriceDto>>(json);
Run Code Online (Sandbox Code Playgroud)
对于解决办法,我从创建映射Prices到PriceDto的替代RemoteData,然后只用foreach分配Ticker.但是,我想了解如何使用automapper进行操作.
对于这种情况,一个好的方法是使用.ConvertUsing。
...
Mapper.Initialize(cfg =>
{
cfg.CreateMap<RemoteData, List<PriceDto>>()
.ConvertUsing(source => source.Prices?.Select(p => new PriceDto
{
Ticker = source.Security?.Ticker,
Open = p.Open,
Close = p.Close
}).ToList()
);
});
...
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请阅读有关自定义类型转换器的信息。
希望对您有所帮助。
| 归档时间: |
|
| 查看次数: |
5848 次 |
| 最近记录: |