c# - Automapper:使用自定义解析器返回的结构

标签 c# automapper

对于 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/

相关文章:

c# - AutoMapper 4.2 和 Ninject 3.2

c# - Automapper 异常 : "Missing type map configuration or unsupported mapping."

c# - ListBox 的 SelectionChanged 事件第二次不起作用

c# - 将标签页的滚动条设置到顶部

c# - 如何连接MySQL数据库?

c# - 将 IQueryable where 子句从 DTO 映射到实体

c# - 简单注入(inject)器注册自动映射器

c# - 使用 Autofac 注册容器本身

c# - 如何在 C# 中使用 google drive api 为文件设置自定义文件属性

c# - 如何使用 automapper 映射具有多个表的数据集