在自动映射自定义解析器中访问请求

时间:2012-12-20 19:40:44

标签: asp.net-mvc-4 asp.net-web-api automapper

我正在开发一个ASP.NET Web API项目。

我使用Auto-mapper从我的域对象映射到DTO

如何将请求参数传递到自定义ValueResolver?

我在stackoverflow上看到了几个类似的问题,发布了两年,这提到这是无法做到的。这是现在相同的情况还是已经解决了?

链接到两年前提出的类似问题:How to pass values to a Custom Resolver in Automapper?

有一个ConstructedBy方法可用于注入您自己的Resolver对象,但我不知道如何访问Request中的传递

由于

1 个答案:

答案 0 :(得分:1)

我暂时使用了AfterMap()功能。我希望有人有更好的解决方案。

为简单起见,如果我将源和目标类减少到

public class Source {

       public string Value {get;set;}

}

public class Destination{

       public string Value {get;set;}            

       private bool _reset;

       public Destination(bool reset = false){
           _reset = reset;
       } 

       public void TryReset(){
           if(!_reset) return;

            Value = string.Empty;

       }

}

我在Mapping配置中添加了AfterMap()来调用reset方法。

Mapper.CreateMap<Source, Destination>()
      .AfterMap( (source, dest) => dest.TryReset());

在控制器中,我直接从请求传递重置标志

var destination = Mapper.Map(new Source { Value ="Hello" },
                             new Destination(flag));