型号名称: UserModelInsert 实体名称:用户
CreateMap<UserModelInsert, User>()
.ForMember(
dest => dest.Password,
src => src.MapFrom(?????????????????))为了得到正确的结果,我已经尝试了各种方法。我已经创建了继承接口IValueResolver、IMemberValueResolver和您所能想象的所有接口的类,但不幸的是,我无法解决这个问题。
我只需要这样的东西:CreateMap<UserModelInsert, User>().ForMember(dest => dest.Password, src => src.MapFrom(s => StringUtils.Encrypt(s.Password))),但它不起作用
发布于 2017-09-01 03:04:00
执行部分:
我只需要这样的东西:
CreateMap<UserModelInsert, User>().ForMember(dest => dest.Password, src => src.MapFrom(s => StringUtils.Encrypt(s.Password))),但它不起作用
只需使用AutoMapper的自定义式转换器功能即可。
有时,您需要完全控制一种类型到另一种类型的转换。通常,当一种类型看起来与另一种类型不一样时,转换函数已经存在,您希望从“松散”类型转到更强的类型,例如字符串的源类型到目标类型的Int32。
例如礼节 of AutoMap
Mapper.Initialize(cfg => {
cfg.CreateMap<string, int>().ConvertUsing(s => Convert.ToInt32(s));
cfg.CreateMap<string, DateTime>().ConvertUsing(new DateTimeTypeConverter());
cfg.CreateMap<string, Type>().ConvertUsing<TypeTypeConverter>();
cfg.CreateMap<Source, Destination>();
});
public class DateTimeTypeConverter : ITypeConverter<string, DateTime>
{
public DateTime Convert(string source, DateTime destination, ResolutionContext context)
{
return System.Convert.ToDateTime(source);
}
}没有什么能阻止您创建您自己的MyPasswordConverter,将string转换为SecureString。
因此,以您的例子为例,您可以生成如下内容:
public class MyPasswordConverter: ITypeConverter<string, SecureString>
{
public SecureString Convert(string source, SecureString destination, ResolutionContext context)
{
return StringUtils.Encrypt(source);
}
}当然,...assuming返回一个SecureString (它可能应该返回)。
https://stackoverflow.com/questions/45992249
复制相似问题