对于 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
}
}
我返回了一个结构,因为映射规则非常复杂,我无法为每个属性编写自定义解析器,因为它们彼此相关。
所以我的想法是在一个解析器中执行此操作,该解析器返回一个结构并像这样使用它
AutoMapper.Mapper.CreateMap<MyViewModel, myData>()
.ForMember(dest => dest.SomePropA, src => src.ResolveUsing<MyResolver>().propA))
.ForMember(dest => dest.SomePropB, src => src.ResolveUsing<MyResolver>().propB))
不幸的是,这不起作用。
看起来像src.ResolveUsing<MyResolver>()
不返回结构
非常感谢任何帮助。
谢谢。
最佳答案
通过使用 FromMember
,您可以将属性从源传递到您的 ValueResolver。
你可以这样使用:
.ForMember(dest => dest.SomePropA, opt=> opt.ResolveUsing<MyResolver>().FromMember(src => src.propA))
如果您不指定 FromMember
,AutoMapper 会将源传递给您的 ValueResolver。
关于c# - Automapper:使用自定义解析器返回的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5368525/