我正在开发一个ASP.NET Web API项目。
我使用Auto-mapper从我的域对象映射到DTO
如何将请求参数传递到自定义ValueResolver?
我在stackoverflow上看到了几个类似的问题,发布了两年,这提到这是无法做到的。这是现在相同的情况还是已经解决了?
链接到两年前提出的类似问题:How to pass values to a Custom Resolver in Automapper?
有一个ConstructedBy方法可用于注入您自己的Resolver对象,但我不知道如何访问Request中的传递
由于
答案 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));