我希望能将参数传递给一个映射,以便根据该参数决定一个值。
一个简单的类
public class Person
{
string Name;
}
以及它的DTO
public class PersonDTO
{
string Name;
string IsAProgrammer;
}
我希望您能为我提供类似于这样的功能。
var parameterIsTrue = true; // how do I pass this value?
CreateMap<MyClassDTO, MyClass>()
.ForMember(x => x.Name, opt => opt.MapFrom(src => src.Name))
.ForMember(x => x.IsAProgrammer,
opt => opt.MapFrom(parameterIsTrue ? "sure!" : "nope"));
编辑
我正在尝试编写自定义解析器,但不知道如何将参数传递给它。我已经 figured out 如何制作解析器:
public class PersonResolver : IValueResolver<Person, PersonDTO, string>
{
...
public string Resolve(Person src,
PersonDTO dest,
string destMember,
ResolutionContext context)
{
return (bool) context.Items["isProgrammer"] ? "sure!" : "nope";
}
}
但是我在映射方面仍然失败了:
CreateMap<MyClassDTO, MyClass>()
.ForMember(x => x.Name, opt => opt.MapFrom(src => src.Name))
.ForMember(x => x.IsAProgrammer,
opt => opt.ResolveUsing(PersonResolver)); // what ???
// how do I pass the context?
CustomResolver
。 - HariHaran