使用AutoMapper,我使用ValueResolver返回这样的结构
struct MyStruct
{
public int propA;
public int propB;
public int propC;
}
class MyResolver : ValueResolver<MyViewModel, MyStruct>
{
protected override MyStruct ResolveCore(MyViewModel source)
{
....return MyStruct data
}
}
Run Code Online (Sandbox Code Playgroud)
我返回了一个结构,因为映射规则非常复杂,我无法为每个属性编写自定义解析器,因为它们彼此相关.
所以我的想法是在一个返回结构并使用它的解析器中执行此操作
AutoMapper.Mapper.CreateMap<MyViewModel, myData>()
.ForMember(dest => dest.SomePropA, src => src.ResolveUsing<MyResolver>().propA))
.ForMember(dest => dest.SomePropB, src => src.ResolveUsing<MyResolver>().propB))
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用.
看起来好像src.ResolveUsing<MyResolver>()没有返回结构
任何帮助都非常感谢.
谢谢.
通过使用,FromMember您可以将属性从源传递到ValueResolver.
你可以使用这样的东西:
.ForMember(dest => dest.SomePropA, opt=> opt.ResolveUsing<MyResolver>().FromMember(src => src.propA))
Run Code Online (Sandbox Code Playgroud)
如果您未指定FromMember,AutoMapper会将源传递给您的ValueResolver.
| 归档时间: |
|
| 查看次数: |
1737 次 |
| 最近记录: |